如何为“价格”设置自定义表单输入字段?
我有一个基本的HTML表单,使用PHP将一些数据添加到页面。我想将此表单字段设置为“价格”字段。我的HTML是:如何为“价格”设置自定义表单输入字段?
<input class="bids" name="comment" id="comment" tabindex="4" />
我怎样才能解决这个领域,使用户无法进入随机字母,美元符号,破折号,或其他奇怪的格式。我希望输出是全部美元。对不起,我是一个完整的编程白痴。 :)
使用JavaScript与正则表达式只允许客户端的数字。您还应该使用php &正则表达式来检查服务器端,以确保发布数据仅包含数字。
这是一个javascript函数,用于检查以确保特定字段输入仅包含数字。
function IsNumeric(numstr)
{
if (numstr.match(/^\d+$/)) {
alert("Valid number");
}
else
{
alert("Only numeric values are allowed");
}
}
看看this javascript regex guide来帮助你。
不要忘记做PHP服务器端的检查,以及...
PHP的正则表达式的功能将类似于:
preg_match('/[0-9]+/', $numstr);
给予的形式onsubmit事件
<form blah ... onsubmit="return proof(this)">
您的防爆功能的确是这样的:
var proof = function(form){
value = form.comment;
var strReg = "^([0-9\.\-])";
var regex = new RegExp(strReg);
return(regex.test(value));
}
谢谢!我会在哪里放置证明功能?头? javacript? (对不起) – RodeoRamsey 2010-06-11 09:43:20
标题将是上帝。内部
您可以使用下面的代码将输入框输入限制为数字和小数点。它使用jquery plugin caret来获取输入的当前位置以及选择的长度。 你可以固定数字位数以及小数点数
$("#mPrice").live(
"keydown keyup",function(event) {
checkNumberDecimal(event,'mPrice',2,7);});
function checkNumberDecimal(event,element,noDecimal,noDigit)
{
var number = $('#'+element).val();
var caretlength = $('#'+element).caret().text.length;
var position = $('#'+element).caret().start;
var flagDecimal=0;
var flagDigit=0;
if(number.indexOf('.') != -1)
{
var n = number.substring(number.indexOf('.')+1);
if(caretlength <=1)
{
if(n.length >= noDecimal && (number.length - position) < (noDecimal+1))
flagDecimal=1;
if(noDigit > -1)
{
if(number.length >= (noDigit+1))
flagDigit = 1;
}
} else if(position == (number.length - (n.length+1)))
{
if(noDigit > -1)
{
if(number.length >= (noDigit+1))
flagDigit = 1;
}
}
}
else
{
if(caretlength <=1)
if(noDigit > -1)
{
if(number.length >= (noDigit - noDecimal))
{ flagDigit = 1;}
}
}
// Allow: backspace (8), delete (46), tab (9), escape (27), enter (13), decimal (110), period (190), 0-9 (48-57), 0-9 (96-105)
// keypad: 0-9 (48-57), a-z (65-90) period (190)
// numpad: 0-9 (96-105), decimal (110)
// capslock (20)
// end (35), home (36) left arrow (37), up arrow (38), right arrow (39), down arrow ( (40)
if ((number.indexOf('.') < 0 && noDecimal > 0 && (event.keyCode ==110 || event.keyCode == 190)) || event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
else{
// Ensure that it is a number and stop the keypress
if (flagDecimal === 1 || flagDigit === 1 || event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
event.preventDefault();
}
}
}
你有没有读过被接受的答案?你的回答给接受的答案增加了什么? – Yaroslav 2012-10-11 06:39:56
哇超赞。所以我会将这个函数包装在脚本标签中并放入我的头文件中?那我怎么把它和我的表单提交? (对不起,总编程noob!) – RodeoRamsey 2010-06-11 09:44:59
是的,在
部分。 – Sev 2010-06-11 14:45:36