2010-04-04 82 views
2

我想在用户输入文本字段之前添加一个$符号,而不需要在用户单击提交时实际提交$。此外,我需要禁止用户输入任何内容,而不是输入数字。我知道JQuery输入掩码(http://www.conetrees.com/2009/03/blog/jquery-masked-input-plugin-increase-usability-for-masked-format-input-fields),但是这个插件要求你设置用户应该输入的数字/字母的确切数量,这对我目前的项目没有好处。任何人都可以想出一种方法来完成我上面描述的内容吗?使用JS将字符添加到文本字段中

回答

2

一种方法是抓住一切除了从输入美元,并将其存储在一个隐藏字段:

$("form").submit(function() { 
    var total = $("#total").val(); 
    $("#hidden").val(total.replace("$", "")); 
}); 

这里有一个完整的工作溶液(记住,它可能需要细化之前,符合真实世界):

$("form").submit(function() { 
    var total = $(".total").val(); 
    $("#hidden").val(total.replace("$", "")); 
}); 
$("#total").keypress(function() { 
    validateNumeric(); 
}).keyup(function() { 

    // if the user has pressed backspace and removed the dollar, put it back 
    if($(this).val() == null || $(this).val() == "") { 
     $(this).val("$"); 
    } 
}); 

function validateNumeric(evt) { 
    var theEvent = evt || window.event; 
    var key = theEvent.keyCode || theEvent.which; 
    if(key == 8) { 
     return true; 
    } 
    key = String.fromCharCode(key); 
    var regex = /[0-9]/; 
    if(!regex.test(key)) { 
     theEvent.returnValue = false; 
     theEvent.preventDefault(); 
    } 
} 

测试标记:

<form> 
    <input type="text" id="total" value="$"/> 
    <input type="hidden" id="hidden"/> 
    <input type="submit" value="Submit"/> 
</form> 
+0

但是,当用户在字段中输入一些文本时,如何显示字符? – Thomas 2010-04-04 12:38:48

+0

作品,感谢这个 - – Thomas 2010-04-04 13:00:27

1

如果$总会在那里,那么如何把放在之前的文本字段呢?

个人而言,我避免将多余的东西(单位,水印,whatnot)插入到像瘟疫这样的文本字段的值中。他们总是最终被解释为实际内容的方式,他们不应该。

+0

其中一人 '必须有' 的要求,第e客户端,一旦用户点击文本输入,$就出现在字段中。我知道它完全坚果。 – Thomas 2010-04-04 12:28:54

+0

另外还有一个表单的另一部分,客户希望将'sq.feet'附加到用户输入的末尾。 – Thomas 2010-04-04 12:30:45

+0

给你的客户一些感觉。告诉他,这与字段标签仅在被点击时才会出现相同,这是神秘肉类导航的恶意变体(http://en.wikipedia.org/wiki/Mystery_meat_navigation) – 2010-04-04 12:34:11