我使用cordova为iOS的待办事项列表样式应用程序提供了表单输入字段。我希望用户能够输入如下字符: %& + 然而,这些导致应用程序崩溃。我的临时修复是使用.keypress函数限制表单字段上的键输入。但是,我想找到一种方法让用户能够在列表项中包含这些字符。 (我还意识到添加空格作为唯一输入会导致应用程序崩溃。)
我看到很多Q + As验证限制了这些字符的使用但是是否可以在表单输入中使用它们?
谢谢!
/* Form to make a new list item */
$('.formMain').submit(function () {
var key = Date.now();
var text = $('#todo').val();
var textTrim = text.replace(/ /g, '').toLowerCase();
var checked = false;
var quantity = $('#quantity').val();
// if the inputs are blank
if (text.length == 0) {
return false;
}
// if item already on list
else if ($('.list #' + textTrim).length) {
alert(text + " already on list!");
}
// if the input box is not empty run the template function
else if ((text.length > 0) === true) {
var html = template(text, textTrim, key, checked, quantity);
$('.list').append(html);
itemListArray.push({ key: key, text: text, textTrim:textTrim, checked: checked, quantity: quantity});
// Save the item list array
if (window.localStorage) {
window.localStorage.setItem('itemListArray', JSON.stringify(itemListArray));
}
$('#todo').val("");
$('#quantity').val("");
}
return false;
答案 0 :(得分:0)
感谢你向正确的诺亚努方向努力。
将元字符分配给我的“textTrim”变量时发生了崩溃。我相信问题是该变量包含元字符并被分配给html标记的ID。 (我使用textTrim作为唯一标识项目以进行验证的方法)。
var textTrim = escapeHtml(text).toLowerCase();
通过创建一个用其十进制值替换每个字符的escapeHtml函数来解决问题。例如
function escapeHtml(text) {
return text
.replace(/&/g, "38") // etc