Hi I have similar issue.
My Scenario is I have a preferred contact type option set and when user chooses email I hide contact number and show email value and on submit if it is missing proper value I have to fire error and not allow form submission and vice versa for when user choses phone number.
The code runs fine if chose 1 but if I switch to other it wont fire and finishes form submission. Please review and let me know where should I correct my code.
if (window.jQuery) {
(function ($) {
$(document).ready(function () {
showHideControls();
$("#dhhs_emailaddress").closest("td").find("div.control, div.info").hide();
$("#dhhs_contactnumber").closest("td").find("div.control, div.info").hide();
$('#dhhs_preferredmethodofcontact').change(function () {
if ($('#dhhs_preferredmethodofcontact').length) {
showHideControls();
}
});
$('#dhhs_contactnumber').change(function () {
formatPhoneNumber(this);
});
});
}(window.jQuery));
}
//Format Phone NUmber
function formatPhoneNumber(phoneNumberField) {
var username_length = $(phoneNumberField).val().length;
if (username_length == 10) {
$(phoneNumberField).val($(phoneNumberField).val().replace(/^(\d{3})(\d{3})(\d+)$/, "$1-$2-$3"));
}
}
//Pass Id to makeRequired & makeNotRequired function
function showHideControls() {
debugger;
var preferredMethodOfContact = $("#dhhs_preferredmethodofcontact").val();
if (preferredMethodOfContact == 372950000) //if it’s a Email
{
MakeFieldRequired('dhhs_emailaddress', 'is a required field.');
makeNotRequired('dhhs_contactnumber');
ShowHideRequired('dhhs_emailaddress', 'dhhs_contactnumber');
}
else if (preferredMethodOfContact == 372950001) //if it is Phone
{
MakeFieldRequired('dhhs_contactnumber', 'has to be US 10 digit format and is a required field.');
makeNotRequired('dhhs_emailaddress');
ShowHideRequired('dhhs_contactnumber', 'dhhs_emailaddress');
}
}
//Make field required.
function MakeFieldRequired(fieldName, errorMessage) {
try {
if ($("#" + fieldName) != undefined) {
$("#" + fieldName).prop('required', true);
$("#" + fieldName).closest(".control").prev().addClass("required");
// Create new validator
var Requiredvalidator = document.createElement('span');
Requiredvalidator.style.display = "none";
Requiredvalidator.id = fieldName + "Validator";
Requiredvalidator.controltovalidate = fieldName;
Requiredvalidator.errormessage = "<a href='#" + fieldName + "_label'>" + $("#" + fieldName + "_label").html() + errorMessage + "</a>";
Requiredvalidator.initialvalue = "";
Requiredvalidator.evaluationfunction = function () {
var value = $("#" + fieldName).val();
alert('value of email ' + value);
if (value == null || value == "") {
return false;
}
else if (value < 10 || value > 10) {
if (fieldName == 'dhhs_contactnumber') {
return false;
}
}
return true;
};
// Add the new validator to the page validators array:
Page_Validators.push(Requiredvalidator);
}
}
catch (error) {
errorHandler(error);
}
}
function makeNotRequired(fieldName) {
//Clean up previous validator <span> if present
if ($('#ValidationSummaryEntityFormView').length) {
$('#ValidationSummaryEntityFormView').hide();
}
try {
if ($("#" + fieldName) != undefined) {
$("#" + fieldName).closest(".control").prev().removeClass("required");
$("#" + fieldName).prop('required', false);
for (i = 0; i < Page_Validators.length; i++) {
if (Page_Validators[i
].id == fieldName + "Validator") {
Page_Validators.splice(i);
}
}
}
}
catch (error) {
errorHandler(error);
}
}
function ShowHideRequired(fieldNameToShow, fieldNameToHide) {
try {
if ($("#" + fieldNameToShow) != undefined)
$("#" + fieldNameToShow).closest("td").find("div.control, div.info").show();
if ($("#" + fieldNameToHide) != undefined)
$("#" + fieldNameToHide).closest("td").find("div.control, div.info").hide();
}
catch (error) {
errorHandler(error);
}
}// JavaScript source code