我有文本框和上传文件,如:
<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
答案 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();
});