我有文本框和上传文件,如:
<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
最佳答案
问题在于您在此处编写 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/ :
To use any of the meta-characters ( such as !"#$%&'()*+,./:;<=>?@[]^`{|}~ ) as a literal part of a name, it must be escaped with with two backslashes: \.
关于javascript - 验证名称为数组的输入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31720542/