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

<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/
使用任何元字符(例如!“#$%&'()*+,./:;?@[]^ `{}~)作为名称的文字部分,必须用两个反斜杠进行转义:\。

关于javascript - 验证具有数组名称的输入元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31720542/

10-09 06:28