如何为“价格”设置自定义表单输入字段?

问题描述:

我有一个基本的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); 
+0

哇超赞。所以我会将这个函数包装在脚本标签中并放入我的头文件中?那我怎么把它和我的表单提交? (对不起,总编程noob!) – RodeoRamsey 2010-06-11 09:44:59

+0

是的,在

部分。 – Sev 2010-06-11 14:45:36

给予的形式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)); 
} 
+0

谢谢!我会在哪里放置证明功能?头? javacript? (对不起) – RodeoRamsey 2010-06-11 09:43:20

+0

标题将是上帝。内部

您可以使用下面的代码将输入框输入限制为数字和小数点。它使用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(); 
     } 
    } 
} 
+0

你有没有读过被接受的答案?你的回答给接受的答案增加了什么? – Yaroslav 2012-10-11 06:39:56