PHP. JQuery. Проверка на пустое значение поля

258
15 сентября 2017, 21:01

Есть функция навешенная на кнопку:

$('.form_id_'+formID).find("input[type='submit']").click();

Есть способ проверки на пустое значение:

            if ($("[name='REGISTER[LOGIN]']").val() != '') $('#errIdLOGIN').hide();
            if ($("[name='REGISTER[PASSWORD]']").val() != '') $('#errIdPASSWORD').hide();
            if ($("[name='REGISTER[CONFIRM_PASSWORD]']").val() != '') $('#errIdCONFIRM_PASSWORD').hide();
            if ($("[name='REGISTER[EMAIL]']").val() != '') $('#errIdEMAIL').hide();

Как записать общее условие при котором выполнялась бы проверка полей, если она прошла, то кнопка могла бы нажаться. Помогите с Jquery у меня беда((

Answer 1

$('.form_id_2').on("submit", function(e){ 
	var valid = true; 
	$("[name*='REGISTER']").each(function(m){ 
  	var _this = $(this); 
    if(_this.val() != ''){ 
    	var hide_error_id = "#"+_this.attr("rel_err"); 
    	$(hide_error_id).hide(); 
      console.log("hre") 
    }else{ 
    	valid = false; 
    } 
  }) 
	if(!valid){ 
 	 return false; 
  } 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<form class="form_id_2" action="/"> 
  <input type="text" name="REGISTER[LOGIN]" rel_err="errIdLOGIN"> 
  <input type="text" name="REGISTER[PASSWORD]" rel_err="errIdPASSWORD"> 
  <input type="text" rel_err="errIdCONFIRM_PASSWORD" name="REGISTER[CONFIRM_PASSWORD]"> 
  <input type="text" rel_err="errIdEMAIL" name="REGISTER[EMAIL]"> 
  <input type="submit" value="Button"> 
  <div id="errIdLOGIN">errIdLOGIN</div> 
  <div id="errIdPASSWORD">errIdPASSWORD</div> 
  <div id="errIdCONFIRM_PASSWORD">errIdCONFIRM_PASSWORD</div> 
  <div id="errIdEMAIL">errIdEMAIL</div> 
</form>

Answer 2
$('.form_id_'+formID).find("input[type='submit']").click();

Это не функция, навешенная на кнопку, это вызов события click.

Из вопроса можно только догадываться что нужно (комментарии к вопросам не могу писать пока). Как я понял нужна валидация формы перед отправкой.

//Если у Вас много форм и их нужно валидировать, то советую навесить на них общий класс,
//тогда можно переписать так $('.validate_form').find('input[type="submit"]')
$('.form_id_'+formID).find('input[type="submit"]').click(function(){
    var submitElem = $(this),
        isValidate = true,
        form = submitElem.paretns('form');
    form.find('[name^="REGISTER"]').each(function(i, formElem){
        var formElemName = $(formElem).attr('name'),
            //Надо получить имя поля, чтобы высветить нужную ошибку, не совсем удобно получается
            fieldName = formElemName.replace(/^REGISTER\[/, '').replace(/\]$/, '');
        $('#errId' + fieldName).hide();
        if ($(formElem).val() === '') {
            isValidate = false;
            $('#errId' + fieldName).show();
        } 
    });
    if (!isValidate) {
        //валидация не прошла, 
        //тут можно вывести предупреждение или подсветить нужные элементы формы
        return false;
    }
});

P.S. Когда пишите выборку jq по атрибутам, то указывайте имя атрибута в двойных кавычках (как в html), а всю строку выборки, соответственно, в одинарных.

READ ALSO
Значение из HtmlHelper

Значение из HtmlHelper

На форме cshtml расположен html heplper, который генерирует следующую разметку

265
Округление значений height (CSS, JQuery)

Округление значений height (CSS, JQuery)

Есть таблица и в ней определена высота строк (например, в данной строке 19,5px; строки разные):

355
зум на картинку

зум на картинку

как сделать такой зум при наведении на картинку https://wwwtemplatemonster

407