Jquery validation если заполнено одно из полей
Хотел сделать форму, которая проверяет три поля, одно постоянно, а два других, только если они не заполнены.
При этом если заполнено mail ИЛИ phone, то форма отправляется. При этом на поле phone стоит маска. Кто знает как решить?
<form id="form_mid" class="big_form" action="php/send.php" method="post" novalidate="novalidate">
<div class="form_mid_label">Напишите сферу вашего бизнеса</div>
<input type="text" name="salon" placeholder="например, автосалон">
<div class="form_mid_label">Напишите ваш сайт, если есть</div>
<input type="text" name="site" placeholder="например, mazzmedia.ru">
<div class="form_mid_label">Укажите имеющийся бюджет на тест</div>
<input type="text" name="budjet" placeholder="например, 7000 руб">
<div class="form_mid_label">Ваше имя</div>
<input type="text" name="name" placeholder="">
<div class="form_mid_label mail">E-mail, если есть</div>
<input type="text" name="email" placeholder="например, info@mazzmedia.ru">
<div class="form_mid_label phone">Контактный номер</div>
<input type="text" name="phone" placeholder="+7 (___) ___-__-__">
<button>ОТПРАВИТЬ</button>
</form>
$("#form_mid").validate({
rules: {
budjet: {required: true},
phone: {required: true},
email: {required: false, email: true}
},
messages: {
budjet: {required: false},
phone: {required: false, phone: false},
email: {required: false, email: false}
},
submitHandler: function(form) {
sendForm(form);
}
});
Сам я пробовал решить таким способом, но не получилось:
$("#form_mid button").click(function(){
if ($("#form_mid input[name='email']").val == ""){
$("#form_mid").validate({
rules: {
budjet: {required: true},
phone: {required: true},
email: {required: false, email: true}
},
messages: {
budjet: {required: false},
phone: {required: false, phone: false},
email: {required: false, email: false}
},
submitHandler: function(form) {
sendForm(form);
}
});
}
else if ($("#form_mid input[name='email']").val != ""){
$("#form_mid").validate({
rules: {
budjet: {required: true},
phone: {required: false},
email: {required: true, email: true}
},
messages: {
budjet: {required: false},
phone: {required: false, phone: false},
email: {required: false, email: false}
},
submitHandler: function(form) {
sendForm(form);
}
});
}
});
|
Цитата:
|
Скобки были, это я по памяти писал, забыл)
В целом неправильно наверно) |
Цитата:
<input type="text" name="budjet" required="required" placeholder="например, 7000 руб"> Ну и все остальное, что может быть полезным - в атрибуты. Потом просто берешь элемент и проверяешь все ли соответствует. |
Если забить на правильность, в required можно записать минимальную длину, например required="3" - минимум 3 букавы. А если юзать pattern, туда вообще почти все можно запихать.
|
validate добавление своего метода и выбор заполнения одного поля из двух
Nikita21,
вариант ... маску и length > 3 сами добавьте
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head>
</script>
<style type="text/css">
label.error {
position: absolute;
margin-left: 12px;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/jquery.validate.min.js"></script>
<script>
$(function () {
$.validator.addMethod("requiredphone", function (value, element) {
return value.length || $.trim($('[name="email"]').val());
},
" Заполните это поле!!!");
$.validator.addMethod("requiredemail", function (value, element) {
return value.length || $.trim($('[name="phone"]').val());
},
" Заполните это поле!!!");
$("#form_mid").validate({
rules: {
budjet: {required: true},
phone: {requiredphone: true},
email: {requiredemail: true}
},
submitHandler: function(form) {
sendForm(form);
}
});
});
</script>
</head>
<body>
<form id="form_mid" class="big_form" action="php/send.php" method="post" novalidate="novalidate">
<div class="form_mid_label">Напишите сферу вашего бизнеса</div>
<input type="text" name="salon" placeholder="например, автосалон">
<div class="form_mid_label">Напишите ваш сайт, если есть</div>
<input type="text" name="site" placeholder="например, mazzmedia.ru">
<div class="form_mid_label">Укажите имеющийся бюджет на тест</div>
<input type="text" name="budjet" placeholder="например, 7000 руб">
<div class="form_mid_label">Ваше имя</div>
<input type="text" name="name" placeholder="">
<div class="form_mid_label mail">E-mail, если есть</div>
<input type="text" name="email" placeholder="например, info@mazzmedia.ru">
<div class="form_mid_label phone">Контактный номер</div>
<input type="text" name="phone" placeholder="+7 (___) ___-__-__">
<br>
<button>ОТПРАВИТЬ</button>
</form>
</center>
</body>
</html>
|
Видел подобное решение в статье, переведенной через гугл, ниче не понял)
Спасибо большое, все работает. =) |
| Часовой пояс GMT +3, время: 11:20. |