验证输入元素名称为数组

时间:2015-07-30 09:53:37

标签: javascript jquery html

我有文本框和上传文件,如:

<input type="text" id = "contract_copy_text[]" name="contract_copy_text[]" value="" maxlength="50"/>
<input type="file" name="contract_copy_pdf[]" id="contract_copy_pdf[]" accept="application/pdf" />

我无法验证它。

我试过了:

var contract_copy_text = $('#contract_copy_text[]').val(); // document.getElementById('contract_copy_text').value;
    var contract_copy_pdf = $('#contract_copy_pdf[]').val(); // document.getElementById('contract_copy_pdf').value;

    if (contract_copy_text == "") {
        alert("insert contract copy title for file");
        $('#err_lbl_contract_copy_text').html('insert contract copy title for file');
        return false;
    }

    if (contract_copy_pdf == "") {
        alert("Please select contract copy pdf file for upload");
        $('#err_lbl_contract_copy_pdf').html('Please select contract copy pdf file for upload');
        return false;
    }

但这不起作用。

请注意:这些字段是根据需要动态生成的(点击时)。 谁能告诉我我犯了什么错误。

更新:

请参阅fiddle

2 个答案:

答案 0 :(得分:2)

问题在于你在这里编写jQuery选择器的方式:

var contract_copy_text = $('#contract_copy_text[]').val();
var contract_copy_pdf = $('#contract_copy_pdf[]').val(); 

您必须转义[]个字符(使用\\),因为they have special meaning inside the selector expression

var contract_copy_text = $('#contract_copy_text\\[\\]').val();
var contract_copy_pdf = $('#contract_copy_pdf\\[\\]').val(); 

来源https://api.jquery.com/category/selectors/

  

使用任何元字符(例如!“#$%&amp;'()* +,。/:;&lt; =&gt;?@ [] ^`{|}〜)作为文字作为名称的一部分,必须使用两个反斜杠进行转义:\。

答案 1 :(得分:-1)

您是否可以通过Javascript选择器

启动来访问它

编号

$( "input[id^='contract_copy_text']" )

或姓名

$( "input[name^='contract_copy_text']" )

这将是一个数组

然后使用.each

进行迭代
$( "input[id^='contract_copy_text']" ).each(function( index ) {
  var x = $( this ).val();
});