![](/img/trans.png)
[英]Set cart item price from a hidden input field custom price in Woocommerce 3
[英]How to set custom form input field for “Price”?
我有一個基本的html表單,可以使用PHP將一些數據添加到頁面中。 我想將此表單字段設為“價格”字段。 我的html是:
<input class="bids" name="comment" id="comment" tabindex="4" />
如何解決此問題,使用戶無法輸入隨機字母,美元符號,破折號或其他怪異格式。 我希望輸出是整美元。 抱歉,我是一個完整的編程傻瓜。 :)
將javascript與regex配合使用,僅允許客戶端使用數字。 您還應該使用php和regex進行服務器端檢查,以確保帖子數據僅包含數字。
這是一個JavaScript函數,用於檢查以確保特定字段輸入僅包含數字。
function IsNumeric(numstr)
{
if (numstr.match(/^\d+$/ ) ) {
alert("Valid number");
}
else
{
alert("Only numeric values are allowed");
}
}
查看此javascript正則表達式指南以幫助您。
不要忘記在服務器端也進行PHP檢查...
PHP regex函數如下所示:
preg_match('/[0-9]+/', $numstr);
您可以使用以下代碼將輸入框輸入限制為數字和小數點。 它使用jquery插件插入符號來獲取輸入的當前位置以及選擇的長度。 您可以固定數字位數和小數點位數
$("#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();
}
}
}
給表單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));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.