-2

我正在尝试验证动态添加控件的 html 页面。

我的代码如下所示

function validateComments() {            
        var errorcheck = 0;           

        $("[id^=txt_comments]").each(function () {
            var comment = $.trim($(this).val());
            $("[id^=validate]").each(function () {

                var value = $(this).val();
                if (comment == 0 && value == "Yes") {                      
                    errorcheck = 1;
                }
            });               

        });
        if (errorcheck == 1) {
                // Show error message
            }
        else {
            ErrorHide();
            return true;
        }

    }

所以我的页面有一个<textarea>HTML 控件(带有 id 'txt_comments')和一个<select>HTML 控件(带有 id 'validate')。

此控件有选项:“选择一个值”、“是”、“否”

所以每个文本区域都有一个各自的选择(下拉)。

并且这些控件是动态添加的。

我的验证规则是:

  • 用户必须从下拉列表中选择任何值
  • 如果用户选择“是”,则相应的文本区域应该有一些文本(最少 1 个字符,最多 1000 个字符)
  • 如果用户选择“否”,则 textarea 可以为空白或禁用。

我能够验证文本区域或下拉列表。我无法同时验证两者。

任何人都可以帮忙吗?

提前致谢。

编辑:

我从 VB.NET 生成 HTML 动态代码

Dim sb As New StringBuilder

sb.Append("<table border='0'cellpadding='0' cellspacing='0' width='50%' class ='tabledata' id='tblContent'>")
For Each item As myObject In myLst            
    sb.Append("<tr><td style='width:50%;' valign='top'>")
    sb.Append("<textarea id=txt_comments" & i & " name='txt_comments' rows='5' cols='60'></textarea></td>")
    sb.Append("<td style='width:15%' valign='top' align='center'><select ID = validate" & i & " name=ValidateValues style ='border:1;width:150px'><option value = ''>Select</option><option value = 'Yes'>Yes</option><option value = 'No'>No</option><br /><br /></td>")
                sb.Append("</tr><tr>")
Next
sb.Append("</table>")
myContent.InnerHtml = sb.ToString
4

1 回答 1

0

有很多很多不同的方式来做你正在做的事情;但我会以最简单的形式回答。基本上; 观察<select />控件的变化值;然后,<textarea />根据索引位置验证它是否对应。

function validate() {
    var haserror = false;
    $("select[id^=validate]").each(function(i){
        var targ = 'txt_comments'+i;
        if (this.value=='Yes') {              
            if (0 == $.trim(document.getElementById(targ).value).length) {
                console.log(targ + ' is required');
                haserror = true;
            }
        }
    });

    return haserror;
}
于 2018-05-10T00:53:25.057 回答