我试图寻找答案,但是那里的代码版本太多了,令人困惑的像我这样的菜鸟....我需要电话字段只接受8位数字,否则表格不会提交。 ..
这是我得到的代码(我添加了min和mac长度,但它没有工作:
public function validate( $data )
{
$validator = new AB_Validator();
foreach ( $data as $field_name => $field_value ) {
switch ( $field_name ) {
case 'email':
$validator->validateEmail( $field_name, $data );
break;
case 'phone':
$validator->validatePhone( $field_name, $field_value, $min_length="8", $max_length="8", true );
break;
case 'date_from':
case 'time_from':
case 'time_to':
case 'appointment_datetime':
$validator->validateDateTime( $field_name, $field_value, true );
break;
case 'name':
$validator->validateString( $field_name, $field_value, 255, true, true, 3 );
break;
case 'service_id':
$validator->validateNumber( $field_name, $field_value );
break;
case 'custom_fields':
$validator->validateCustomFields( $field_value );
break;
default:
}
}
if ( isset( $data['time_from'] ) && isset( $data['time_to'] ) ) {
$validator->validateTimeGt( 'time_from', $data['time_from'], $data['time_to'] );
}
return $validator->getErrors();
}
我也尝试添加以下脚本,但它只给了我一个警告,我仍然可以点击提交......
<script type='text/javascript'>
function formValidator(){
// Make quick references to our fields
var phone = document.getElementById('phoneno');
// Check each input in the order that it appears in the form!
if(isNumeric(phone, "Please enter a valid phone number")){
if(lengthRestriction(phone, 8, 8)){
return true;
}
}
return false;
}
function notEmpty(elem, helperMsg){
if(elem.value.length == 0){
alert(helperMsg);
elem.focus(); // set the focus to this input
return false;
}
return true;
}
function isNumeric(elem, helperMsg){
var numericExpression = /^[0-9]+$/;
if(elem.value.match(numericExpression)){
return true;
}else{
alert(helperMsg);
elem.focus();
return false;
}
}
function lengthRestriction(elem, min, max){
var uInput = elem.value;
if(uInput.length >= min && uInput.length <= max){
return true;
}else{
alert("Please enter " +max+ " digits");
elem.focus();
return false;
}
}
</script>
<script>
$(document).ready(function(){
$("button.next").click(function(){
$formValidator();
});
});
</script>
非常感谢任何帮助......
答案 0 :(得分:0)
“我也尝试添加以下脚本,但它只给了我一个警告,我仍然可以点击提交......”
如果代码有效,但您仍然可以在收到未提及提交条件的警告后单击提交(或更重要的是,表单可提交),则问题可能出在您的&lt;形式&GT;元件。如果您的表单中有onSubmit事件处理程序(假设您这样做),则调用tel的验证代码。没有。字段,您可以编码onSubmit调用的函数返回false或true。如果为false,则提交将被取消。如果为true,则执行。
如果这对您来说都是新闻,请查看此SO问题以获取指导:
How to prevent form from being submitted?
在那个和一些谷歌搜索之间,你应该找出你需要的东西,假设这是你的问题。
答案 1 :(得分:0)
在搜索和测试表单时,我注意到名称字段至少需要3个字符,因此我检查了代码并注意到了这一点:
case 'name':
$validator->validateString( $field_name, $field_value, 255, true, true, 3 );
所以我调整并将其添加到手机部分,表单现在按预期工作,只接受8位数字。这是添加的代码:
case 'phone':
$validator->validatePhone( $field_name, $field_value, true );
$validator->validateString( $field_name, $field_value, 8, true, true, 8 );