使用Jquery检测文本字段中的第一个字符

时间:2011-12-10 13:39:51

标签: javascript jquery forms

我想知道如何使用Jquery执行以下操作:

我在表单中有1个文本字段。 只要第一个字符是数字,请将此字段的attr名称更改为“number”。如果第一个字符是字母,请将此attr名称更改为“letter”。

!!当数字或文本被复制粘贴到字段中时,这也必须起作用。

谢谢! 的Jeroen

2 个答案:

答案 0 :(得分:6)

将(某些)事件绑定到文本字段: keyup 事件用于在用户修改文本时更新name属性(包括快捷方式) CTRL+V复制粘贴), paste mousemove 事件用于处理复制粘贴(拖动,contextmenu)。

$("#your-input").bind("keyup paste mousemove", function() {
    var char = this.value.charAt(0);     // Use vanilla JavaScript to get the
                                         // first character of the text field
    if (/[0-9]/.test(char)) {            // Test against a pattern: digit
        $(this).attr("name ", "number");
    } else if (/[a-zA-Z]/.test(char)) {  // Else, pattern: letters
        $(this).attr("name", "letter");
    } else {                             // Finally, no name?
        $(this).attr("name", "");
    }
});

如果您希望默认名称为else {...},请移除else if(/[a-zA-Z]/.test(char)) {,并将else { 替换为 letter

答案 1 :(得分:2)

这样的事情:

$("#yourformid").submit(function(){
   var input = $("#yourinputid"),
       val = input.val();
   input.attr("name", /^\d/.test(val) ? "number" :
                      /^[A-Z]/i.test(val) ? "letter" : "");
});

在所有浏览器中处理粘贴很困难,但是如果您只是在提交表单时设置属性,则无论用户做什么,包括拖放更改到字段,您都会被覆盖。 (显然我假设在提交之前属性是什么并不重要。)