Javascript 将名称作为数组的输入元素的验证
我有文本框和上传文件,如:Javascript 将名称作为数组的输入元素的验证,javascript,jquery,html,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" /> 但这不起作用 请注意:这些字段是根据需要动态生
<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" />
但这不起作用
请注意:这些字段是根据需要动态生成的(单击)。
谁能告诉我我犯了什么错误
更新:
请参见您不能通过starts with Javascript选择器访问它吗 身份证 或名称
$( "input[name^='contract_copy_text']" )
这将是一个数组
然后使用.each迭代
$( "input[id^='contract_copy_text']" ).each(function( index ) {
var x = $( this ).val();
});
问题在于您在此处编写jQuery选择器的方式:
var contract_copy_text = $('#contract_copy_text[]').val();
var contract_copy_pdf = $('#contract_copy_pdf[]').val();
您必须转义[
和]
字符(使用\\
),因为:
资料来源:
若要将任何元字符(例如!“$%”和“()*+,./:;?@[]^`{124;}~)用作名称的文字部分,必须使用两个反斜杠对其进行转义:\
“但那不起作用”怎么不起作用?发生了什么事?为什么元素id中有
[]
?代码中有return
,父函数在哪里,何时调用它?@atmd。请看小提琴“haing name as array”-名称不是数组。它只是有[]
在name.PHP中会赋予此特殊含义,并将其中的数据放入数组中,但就HTML而言,[]
没有任何特殊之处(就CSS而言,它在选择器中是特殊的,因此请参见Andrea的回答)。更简单的解决方案是只更改您的ID,它们不需要遵循PHP的命名约定。不要将[]
放入ID中,您的生活会更轻松。@Quentin谢谢。但我正在上载/插入数据库中的这些字段值和文件。所以使用[]在里面name@Ganesh-那又怎样?别管名称。你也在ID中放入[]
,并在jQuery中使用ID选择器。具体来说,你必须转义[
和]
使用选择器中的\
,然后使用放置选择器的字符串文本中的另一个\
转义\
。
$( "input[id^='contract_copy_text']" ).each(function( index ) {
var x = $( this ).val();
});
var contract_copy_text = $('#contract_copy_text[]').val();
var contract_copy_pdf = $('#contract_copy_pdf[]').val();
var contract_copy_text = $('#contract_copy_text\\[\\]').val();
var contract_copy_pdf = $('#contract_copy_pdf\\[\\]').val();