正在开发使用PHP和jQuery创建表单的前端实用程序;我可以添加几个特定的字段,以后将在表单上使用,哪些参数存储在图形界面的dinamically插入的隐藏字段中。到目前为止,一切工作正常,但我偶然发现了一个问题,即将字段添加到显示中的代码(以后会解析它以生成最终的表单数据);在包含参数的注入DIV中,存储在隐藏字段中的正则表达式的反斜杠被剥离。以下是代码的一部分:
var fieldsNumber =1; //this determines the field id of the inserted feature
fieldCenterHtml = '<div class="formFieldCenterArea">'
+ '<div class="formParamContainer"><label>Default value:</label><input type="text" name="field_'+fieldsNumber+'_value" value=""/></div>'
+ '<input type="hidden" name="field_'+fieldsNumber+'_type" value="phone_number"/>'
+ '<input type="hidden" name="field_'+fieldsNumber+'_firstValue" value=""/>'
+ '<input type="hidden" name="field_'+fieldsNumber+'_valueList" value=""/>'
+ '<input type="hidden" name="field_'+fieldsNumber+'_hasRegex" value="1"/>'
+ '<input type="hidden" name="field_'+fieldsNumber+'_regex" value="/^[(]?\d{3}[)]?\s?-?\s?\d{3}\s?-?\s?\d{4}$/"/>'
+ '<input type="hidden" name="field_'+fieldsNumber+'_hasSize" value="0"/>'
+ '<input type="hidden" name="field_'+fieldsNumber+'_size" value="0"/>'
+ '<div class="formParamContainer"><label>is Required:</label><input type="checkbox" name="field_'+fieldsNumber+'_isRequired" value="1" /></div>';
+ '</div> <!-- end formCenterField --'+'>';
//the injecting code
fieldDataHtml = fieldCenterHtml;
//insert the field in the DOM
var element = $('<div/>', {
class: 'element',
html: fieldDataHtml
}).appendTo('#form-area-container');
当字段插入页面时,field_1_regex显示如下:
<input type="hidden" value="/^[(]?d{3}[)]?s?-?s?d{3}s?-?s?d{4}$/" name="field_1_regex">
并丢失正则表达式中的所有反斜杠。 我怀疑appendTo正在剥离DOM中插入的反斜杠;我怎么能解决这个问题?
working example在jsFiddle上。
[编辑]解决了;我决定预测正则表达式字段的数量,推动空字段,并在使用jquery插入DOM之后,使用该值。
jsFiddle中的解决方案测试是here。
答案 0 :(得分:0)
这可能是因为反斜杠应该在这样的字符串中转义:
'_regex" value="/^[(]?\\d{3}[)]?\\s?-?\\s?\\d{3}\\s?-?\\s?\\d{4}$/"/>'