Reputation: 125
In below code, iam using jquery validation..
The prob is only for the FullName field.. when I just entered a FullName as "tom", it should show me some error, but its not showing currently... BUt when i enter as some 'harry potter' (or) 'harry-potter' , it should not show any error....
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
<script type="text/javascript" src="http://jquery-joshbush.googlecode.com/files/jquery.maskedinput-1.2.1.pack.js"></script>
<script>
$(document).ready(function() {
$('#fullname').focus();
var validCharactersRegex = new RegExp(/^[a-z -]+$/);
var doesNotStartWithDashOrSpace = new RegExp(/^[^ -]/);
var fullname_invalid = function(value) {
return validCharactersRegex.test(value) && doesNotStartWithDashOrSpace.test(value) && value.indexOf(' ') == -1 && value.indexOf('--') == -1 && value.indexOf(' -') == -1 && value.indexOf('- ') == -1;
}
$.validator.addMethod("custom_fullname", function(value, element) {
return fullname_invalid(value);
}, 'Your Name should be entered like: "blahblah"');
$('#signup').validate({
rules: {
fullname: {
required: true,
custom_fullname: true
},
email: {
required: true,
email: true
}
},
messages: {
fullname : {
required: "Please specify your Full Name",
custom_fullname : "Your Name should be entered like: fullname lastname (or) fullname-lastname"
},
email: {
required: "We need your email address to contact you",
email: "Your email address must be in the format of [email protected]"
}
}
});
$('#signup').on('submit', function(event) {
event.preventDefault();
});
$("#phone").mask("(9999) 9999999");
});
</script>
<style>
.error {color: red;}
</style>
</head>
<body>
<form id="signup" action="/action">
Full Name: <input name="fullname" type="text" maxlength="14" /><br/>
Email <input id="email" name="email" size="25" class="required email" /><br/>
Telephone Number: <input type="text" name="phone" id="phone" /><br/>
Select Country: <select>
<option value="South Yorkshire" selected>South Yorkshire</option>
<option value="Rest of England">Rest of England</option>
<option value="Wales, Scotland">Wales, Scotland</option>
<option value="Northern Ireland">Northern Ireland</option>
<option value="European Union">European Union</option>
<option value="Rest of World">Rest of World</option>
<option value="Other">Other</option>
</select><br/>
<input type="submit">
</form>
</body>
</html>
please kindly check someone..
Upvotes: 0
Views: 4005
Reputation: 780724
Here's how to do everything in a single regex:
var validCharactersRegex = /^[a-z][- a-z]*[- ]{2}[- a-z]*[a-z]$/i;
function fullname_valid(value) {
return validCharactersRegex.test(value);
}
$.validator.addMethod("custom_fullname", function(value, element) {
return fullname_valid(value);
}, 'Your Name should be entered like: "blahblah"');
This requires that it begin with a letter, end with a letter, contain only letters, spaces, and dashes, and have a separator of either space-space, dash-dash, space-dash, or dash-space somewhere in it.
See FIDDLE
Upvotes: 1