如何在html5 / jquery移动表单输入中允许非字母数字字符

时间:2016-03-21 19:22:52

标签: javascript jquery html5 cordova

我使用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;

1 个答案:

答案 0 :(得分:0)

感谢你向正确的诺亚努方向努力。

将元字符分配给我的“textTrim”变量时发生了崩溃。我相信问题是该变量包含元字符并被分配给html标记的ID。 (我使用textTrim作为唯一标识项目以进行验证的方法)。

var textTrim = escapeHtml(text).toLowerCase();

通过创建一个用其十进制值替换每个字符的escapeHtml函数来解决问题。例如

function escapeHtml(text) {
    return text
    .replace(/&/g, "38")   // etc