2016-09-01 3 views
1

Я хочу проверить, имеет ли значение вход (name="companyname"), и если да, то он должен проверить переключатель (id="Zakelijk"). Если он не имеет значения, он должен проверить другой переключатель (id="Particulier").Если вход имеет значение, необходимо проверить конкретную радиокнопку

Смотрите мой текущий код:

<script type="text/javascript"> 
     function ShowHideDiv() { 
      var chkYes = document.getElementById("Zakelijk"); 
      var dvPassport1 = document.getElementById("checkzakelijk"); 
      var dvPassport2 = document.getElementById("checkzakelijk1"); 
      var dvPassport3 = document.getElementById("checkzakelijk2"); 
      var display = chkYes.checked ? "block" : "none"; 
      dvPassport1.style.display = display; 
      dvPassport2.style.display = display; 
      dvPassport3.style.display = display; 
     } 
    </script> 

    <div class="col-md-12 check-business"> 
     <div class="form-group form-group-xl"> 
      <label for="Particulier"><input type="radio" id="Particulier"checked="checked" name="checkzakelijk" onclick="ShowHideDiv()" />Particulier</label> 
      <label for="Zakelijk"><input type="radio" id="Zakelijk" name="checkzakelijk" onclick="ShowHideDiv()" />Bedrijf</label> 
     </div> 
    </div> 

    <div class="col-md-12" id="checkzakelijk" style="display:none;"> 
     <div class="form-group"> 
      <label for="inputCompanyName" class="control-label">{$LANG.clientareacompanyname}</label> 
      <input type="text" name="companyname" id="inputCompanyName" value="{$clientcompanyname}"{if in_array('companyname', $uneditablefields)} disabled="disabled"{/if} class="form-control" /> 
     </div> 
    </div> 
+0

Hi - вы были предоставлены ряд решений, которые должны работать хорошо, в том числе несколько jsfiddles, показывающие, что они * сделать * работу.Если в соответствии с вашими комментариями они все еще не работают для вас, создайте jsfiddle с кодом в качестве отправной точки, так как может быть, что что-то еще влияет на вашу функциональность, и это поможет исключить его. См. Также [mcve], с акцентом на поддающиеся проверке. –

ответ

1

Есть и другие способы, но это должно вам начать работу:

$(function() { 
    if (($("#inputCompanyName").val() || "") != "") 
    { 
     $("#Zakelijk").prop("checked", true) 
    } else { 
     $("#Particulier").prop("checked", true) 
    } 
}); 

Это основано на вашей HTML, где имя входного = «НазваниеКомпании» также имеет ID «inputCompanyName» и очистят другое радио, потому что они имеют один и тот же name=


Редактировать Working jsfiddle: https://jsfiddle.net/76x42os0/4

Изменить значение ввода в поле кода (вверху слева)

Обновление: Обновлена ​​скрипка указанной JQuery версии 3.1.0 и нашел новую версию JQuery необходимо идентификатора = соответствовать #, в то время, прежде чем он соответствовал по имени =

+0

Спасибо! Я попробовал ваш код, но это не работает. Радиокнопка не проверяется. –

+0

У вас загружен jquery? Вы отметили вопрос jquery. –

+0

Я знаю, я уже загружал его перед '' Но это не похоже, работают. –

0

Если вы хотите, чтобы проверить его при изменении входа вы можете сделать

$("input[name='companyname']").change(function(){ 
     var hasValue = $(this).val() === ""; 
     $("#Zakelijk").prop("checked", hasValue); 
     $("#Particulier").prop("checked", !hasValue); 

}) 

вы можете оптимизировать код, но это более читаемым.

+0

Спасибо! Я попробовал ваш код, но это не работает. Радиокнопка не проверяется. –

+0

@HenkZ вам нужно jQuery. – MayTheSchwartzBeWithYou

+0

Я знаю, я уже загружаю его перед '' Но это не кажется Работа. –

0

Вот рабочий пример того, что вам нужно (хотя и без вашего идентификатора/макета HTML, но вы можете просто изменить идентификаторы внутри).

$("#text-box").on('change', function(){ 
    if($(this).val() != ""){ 
    $('#rd1').prop("checked", true) 
    }else{ 
    $('#rd2').prop("checked", true) 
    } 
}); 

https://jsfiddle.net/bm18hmLa/3/

перехватывает в измененном событие, так что будет происходить каждый раз, когда значение текста окно было изменено.

Подумав:

Изменение

$("#text-box").on('change', function(){ 

в

$("#text-box").on('input', function(){ 

делает его немного "лучше" с точки зрения оперативности.

https://jsfiddle.net/bm18hmLa/5/

и вот версия с именами ID тоже.

https://jsfiddle.net/bm18hmLa/6/

0

В случае, если вам нужно решение в Javascript

if(document.getElementById("inputCompanyName").value !== ""){ 
    document.getElementById("Zakelijk").checked = true; 
    document.getElementById("Particulier").checked = false; 
} 
else{ 
    document.getElementById("Particulier").checked = true; 
    document.getElementById("Zakelijk").checked = false; 
} 
+0

Из-за того, как работает Radios, вам не нужно будет устанавливать значение false, когда вы установите значение true. –

+0

Спасибо! Я попробовал ваш код, но это делает похоже, не работает. Радиокнопка не проверяется. –

Смежные вопросы