我必须防止Coldfusion的默认列表分隔符','被输入到表单输入数组中。我是新手使用javascript进行验证,并且从未尝试切换某人输入的值。我如何抓住逗号,并将其替换为tilda?
我到目前为止尝试过Javascript:
$(document).ready(function(event){
var regExComma = /,/;
$("[name='name[]']").live("keypress",function(event){
// i know i could check the numerical value, i feel this requirement can get more added to it and I would like to just change the regEx accordingly.
if(regExComma.test(String.fromCharCode(event.which)){
//it was a ',' switch it to '~'
event.which = 126;
}
});
// added to show that the 'name' input form array is the only input that cares about the ','
var regExDig = /[\d]/
$("[name=min[]],[name=max[]]").live(keypress, function(event){
if(!regExDig .test(String.fromCharCode(event.which)){
event.preventDefault();
$("#cfocFormMessages").trigger("updateMessages", {"url":"components.cfc/CFOC.cfc", "data":{"more":"stuff"}});
}
});
});
参与cfml / html:
<form action="components/CatagoryService.cfc?method=saveVersion">
<input id="version" name="version" type="text">
<!--- .. more inputs ..--->
<table id="table">
<thead><tr><th>name col</th>
<th>min col</th>
<th>max col</th>
<th>edit</th>
</tr></thead>
<tfoot></tfoot>
<cfoutput query="variables.query">
<tr><td><input name="name[]" type="text" value="#variables.query.name#"></td>
<td><input name="min[]" type="text" value="#variables.query.min#"></td>
<td><input name="max[]" type="text" value="#variables.query.max#"></td>
<td><input name="id[]" type="hidden" value="#variables.query.id#">
<a href="#" class="editLink">edit</a></td>
</tr>
</cfoutput>
<tr><td></td><td></td><td><a href="#" class="addLink">add</a></td></td></tr>
</table>
<input type="Submit"/>
</form>
如果我在JSON字符串中将CatagoryService.cfc?method = saveVersion更改为<cfreturn arguments>
,Coldfusion的典型响应如下:
{VERSION:"",name:"name1,name2",min:"1,3", max:"2,4",id:"1,2"}
答案 0 :(得分:3)
我把your HTML on jsfiddle(您可以在那里测试)并使用匹配所有和元素的选择器添加此JavaScript:
$(document).ready(function(event){
$(document).delegate("input, textarea", "keyup", function(event){
if(event.which === 188) {
var cleanedValue = $(this).val().replace(",","~");
$(this).val(cleanedValue);
}
});
});
如果输入了逗号(代码188),则值字符串中的所有逗号都替换为代字号。
请记住,JavaScript验证不是您想要依赖的。逗号可以很容易地发送到服务器或永远不会被替换,例如在禁用JavaScript的用户代理中。
答案 1 :(得分:1)
我将名称[] .live()event.which = 126;
替换为event.originalEvent.keyCode=126;
var regExComma = /,/;
$("[name='name[]']").live("keypress",function(event){
if(regExComma.test(String.fromCharCode(event.which)){
//this line works as expected. and will swap out the value on keypress.
if(event.originalEvent.keyCode){
event.originalEvent.keyCode=126;
}else if(event.originalEvent.charCode){
event.originalEvent.charCode=126;
}
}
});
wolfram我也提升了你的keyUp解决方案。
答案 2 :(得分:0)
$(document).ready(function(event){
$('#fieldName').keyup(function(event) {
var cleanedValue = $(this).val().replace(",","~");
$(this).val(cleanedValue);
});
});
在jsFiddle上查看。