javascript - 输入文本(数字),复选框值(文本)输出结果

标签 javascript

我需要输入数字和复选框值(文本)的输出结果。

我做了一些代码。

与准备好的数据进行比较,显示结果,但仅使用数字范围太大。

所以我更改了复选框值“a、b、c”而不是“1、2、3”,但它不起作用。

我该如何解决这个问题?

<script src="https://code.jquery.com/jquery-1.7.1.js"></script>
<script type="text/javascript">
window.onload=function(){
$('.height,.style').on('change, input', 
function(){
$('.total').val($('.height').val() * $('.style:checked').val());
});
$('.height,.style').on('change, input', 
function(){
    var total2 = $( 'input#total' ).val();
    if ( total2 == 168a ) {
        document.getElementById("total2").innerHTML = 'S';
    } else if ( total2 == 170a) {
        document.getElementById("total2").innerHTML = 'M';
    } else if ( total2 == 182a) {
        document.getElementById("total2").innerHTML = 'XL';
    } else if ( total2 == 165b) {
        document.getElementById("total2").innerHTML = 'S';
    } else if ( total2 == 175b) {
        document.getElementById("total2").innerHTML = 'M';
    } else if ( total2 == 180b) {
        document.getElementById("total2").innerHTML = 'L';
    } else if ( total2 == 175c) {
        document.getElementById("total2").innerHTML = 'L';
    } else if ( total2 == 176c) {
        document.getElementById("total2").innerHTML = 'XL';

    } else {
        document.getElementById("total2").innerHTML = 'XL';
    }
});
function onlyNumber(){
    if((event.keyCode<48)||(event.keyCode>57))
        event.returnValue=false;
    }
}
</script>

<table>
<tbody>        
<tr id="person_total">
<td><input name="height" type="number" class="span1 height" min="150" max="200" maxlength="3"></td>
<td>
<input type="radio" name="stylebox" class="style" value="a">
<label for="kjc-small">S</label>
<input type="radio" name="stylebox" class="style" value="b" checked="">
<label for="kjc-normal">N</label>
<input type="radio" name="stylebox" class="style" value="c">
<label for="kjc-big">B</label>
</td>

<td><input name="total" type="hidden" id="total" class="span1 total"></td>

</tr>
</tbody>
</table>

<div id="total2"></div>

最佳答案

据我所知,* 不用于字符串连接。 + 用于连接...所以一些数字 + '(null)' + 一些字母将返回一个字符串。在您的 if 语句中,您需要将它们读作字符串……所以是“170a”,而不是 170a。计算机无法识别 170a 是什么...它是整数、 float 等吗?与“170a”显然是一个字符串,计算机可以检查字符串是否相等,即 var x = 'hi'; if (x == 'hi') { alert('yes!'); }。您不必制作另一个事件监听器来监听相同的事件,而只需调用另一个函数,或者甚至将代码包含在监听器的函数中以运行代码。

所以这将执行您几乎 javascript/jQuery/psuedocode 所描述的...但是...如果您希望它执行我认为您打算执行的操作...请给我 15 分钟。编辑:从头开始。我没有足够的数据来确定什么需要去哪里……这个概念就在那里……它在返回信息方面起作用。

        window.onload=function()
        {
            $('.height,.style').on('change, input', 
                function(){
                    var my_var = $(".height").val() + '' + $("input[name='stylebox']:checked").val();
                    //alert(my_var);
                    document.getElementById('total').value = my_var;
                    update_func(my_var);
            });
            //No need to have that twice...
            /*$('.height,.style').on('change, input', */

            function update_func(x){
            //this is x
                total2 = x;
                /*var total2 = $( 'input#total' ).val();*/
                if ( total2 == '168a') {
                    document.getElementById("total2").innerHTML = 'S';
                } else if ( total2 == '170a') {
                    document.getElementById("total2").innerHTML = 'M';
                } else if ( total2 == '182a') {
                    document.getElementById("total2").innerHTML = 'XL';
                } else if ( total2 == '165b') {
                    document.getElementById("total2").innerHTML = 'S';
                } else if ( total2 == '175b') {
                    document.getElementById("total2").innerHTML = 'M';
                } else if ( total2 == '180b') {
                    document.getElementById("total2").innerHTML = 'L';
                } else if ( total2 == '175c') {
                    document.getElementById("total2").innerHTML = 'L';
                } else if ( total2 == '176c') {
                    document.getElementById("total2").innerHTML = 'XL';
                } else {
                    document.getElementById("total2").innerHTML = 'XL';
                }
            }

            function onlyNumber()
            {
                if((event.keyCode<48)||(event.keyCode>57))
                {
                    event.returnValue=false;
                }
            }
        }
    <html>
    <head>
        <script src="https://code.jquery.com/jquery-1.7.1.js"></script>
    </head>
    <body>
    <table>
    <tbody>
        <tr id="person_total">
            <td><input id="height" name="height" type="number" class="span1 height" min="150" max="200" maxlength="3"></td>
            <td>
                <input type="radio" name="stylebox" class="style" value="a">
                <label for="kjc-small">S</label>
                <input type="radio" name="stylebox" class="style" value="b" checked="">
                <label for="kjc-normal">N</label>
                <input type="radio" name="stylebox" class="style" value="c">
                <label for="kjc-big">B</label>
            </td>
            <td><input name="total" type="hidden" id="total" class="span1 total"></td>
        </tr>
    </tbody>
    </table>

    <div id="total2"></div>
    </body>
    </html>

关于javascript - 输入文本(数字),复选框值(文本)输出结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58229511/

相关文章:

javascript - react 的 map 上没有点击事件

JavaScript 计算器问题

javascript - 自动选择日期和时间

javascript - 选择$这个div类

javascript - 处理ui-routers解析功能中的错误? (又名 $stateChangeError)将数据传递到错误状态?

javascript - 如何使用 JQuery 检索对表示其容器对象的变量内的 div 的引用?

javascript - Jquery 每个等待模态关闭

javascript - 如何访问匿名 JSON 属性?

javascript - 如何从 URL 中删除哈希值而不使其立即滚动到顶部?

javascript - (jQuery) 将元素选择到 TD 中并过滤仅包含数字的值