根据MySQL数据库中返回的JSON设置单选按钮进行检查

时间:2015-06-18 13:53:24

标签: javascript php jquery html mysql

当我从a中选择一个值时,需要自动填充我的一个表单。这都是使用$ .ajax和PHP和JSON完成的。到目前为止,除了一种特殊类型的控件 - 单选按钮外,大多数HTML控件都没有任何问题。 我正在尝试根据MySQL在JSON中返回的内容,在单选按钮组中将我的HTML表单中的单选按钮设置为检查状态。

在MySQL中,我将单选按钮状态值存储为01整数表示是或否。

数据库中单选按钮状态的列名是subscribe_status。单选按钮HTML控件的表单名称是subscribe-status我将更改它以便以后删除混淆)。

此刻发生的事情是......什么都没有。我不确定为什么。

jQuery更改单选按钮状态

// property defined?
if(output[0].subscribe_status !== undefined){
    // none of radio buttons are checked?
    if($('input[name=subscribe-status]').is(':checked') === false) {
        // check one based on returned JSON
        if(output[0].subscribe_status === 0){
            $('input[name=subscribe-status]').filter('[value=0]').prop('checked', true);
        }else if(output[0].subscribe_status === 1){
            $('input[name=subscribe-status]').filter('[value=1]').prop('checked', true);
        }
    }
}else{
    console.log("Subscribe status property is undefined");
}

我在success $.ajax调用内执行这些操作,它适用于其他HTML控件,例如<text><textarea><select>类型的输入,但不是单选按钮。 MySQL结果作为output存储在Object变量中。

HTML表单:

<div class="form-group">
    <label for="subscribe-status" class="sr-only">Subscribed?:</label>
    <label for="subscribe-status">Subscribed?:</label>
    <div class="radio-inline">
        <label for="subscribe-status"><input type="radio" name="subscribe-status" value="1" />Yes</label>
    </div>
    <div class="radio-inline">
        <label for="subscribe-status"><input type="radio" name="subscribe-status" value="0">No</label>
    </div>
</div>

注意:我使用Bootstrap。

2 个答案:

答案 0 :(得分:3)

无需if...else

$('input[name="subscribe-status"][value="' + output[0].subscribe_status + '"]').prop('checked', true);

这会选择input元素,name属性为subscribe-statusvalueoutput[0].subscribe_status值。

如果 JSON 并且它包含output,请确保您的subscribe_status变量。

答案 1 :(得分:1)

你这里有错误

$("input[name=subscribe-status]')

你从双引号开始,以单一结尾。