Как получить сумму пользовательских атрибутов в jquery - PullRequest
1 голос
/ 30 января 2020

Я пытаюсь получить значение пользовательского атрибута "mrbvalue". html - это то, что sharepoint дает мне после ввода данных в базу данных. Поэтому я не могу добавлять свои собственные классы или что-либо менять. Console.log () - это просто я вижу, работает ли он. Код работает, но когда я нажимаю переключатель «Нет» и «Иногда», консоль выводит значение «Да».

<tr>
                <td> <span>P1</span> </td>
                <td> <div class="n-mrb n-choice tbl" nfield="td_p1" value="1">

        <div class="mrb-item"><label><input type="radio" name="td_p1"  mrbvalue="Yes"> Yes</label></div>

        <div class="mrb-item"><label><input type="radio" name="td_p1"  mrbvalue="No"> No</label></div>

        <div class="mrb-item"><label><input type="radio" name="td_p1"  mrbvalue="Sometimes"> Sometimes</label></div>

    </div> 
 </td>
</tr>



$(".mrb-item").click(function() {
    var checkboxes = $(".mrb-item");

    for(var i =0; i < checkboxes.length; i++){

    if($('input').attr("mrbvalue")  == "Yes" ){
        console.log("yes");
        }
    }
    if($('input').attr("mrbvalue")  == "No" ){
        console.log("No");
        }
    }
    if($('input').attr("mrbvalue")  == "Sometimes" ){
        console.log("Sometimes");
        }
    }
})

Ответы [ 3 ]

2 голосов
/ 31 января 2020

Измените код, как показано ниже.

<table>
<tr>
<td> <span>P1</span> </td>
<td> <div class="n-mrb n-choice tbl" nfield="td_p1" value="1">
<div class="mrb-item"><label><input type="radio" name="td_p1"  mrbvalue="Yes"/> Yes</label></div>
<div class="mrb-item"><label><input type="radio" name="td_p1"  mrbvalue="No"/> No</label></div>
<div class="mrb-item"><label><input type="radio" name="td_p1"  mrbvalue="Sometimes"/> Sometimes</label></div>
</div> 
</td>
</tr>
</table>
<script src="https://code.jquery.com/jquery-1.12.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
    $(".mrb-item input").click(function() {
        var mrbValue=$(this).attr("mrbvalue");
        if(mrbValue== "Yes" ){
            console.log("yes");
        }
        if(mrbValue== "No" ){
            console.log("No");
        }
        if(mrbValue== "Sometimes" ){
            console.log("Sometimes");
        }
    });
});
</script>

enter image description here

1 голос
/ 31 января 2020
  • jQuery: $ ('input [name = "td_p1"]: флажок "). Attr (' mrbvalue ')
  • pure javascript: document.querySelector (' input [ name = "td_p1"]: проверено '). getAttribute (' mrbvalue ')
1 голос
/ 30 января 2020

Проблема в вашем операторе if, каждый раз, когда вы oop, вы всегда получаете первый ввод. Вам нужно использовать eq.

    // This is wrong
    if($('input').attr("mrbvalue")  == "No" ){
        console.log("No");
    }

    // This is right
    if($('input').eq(i).attr("mrbvalue")  == "No" ){
        console.log("No");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...