删除复选框的“已选中”属性

时间:2012-11-26 01:46:47

标签: javascript jquery ios cordova jquery-mobile

发生错误时,我需要删除一个复选框的“已检查”属性。

.removeAttr函数不起作用。任何的想法? :/

HTML

<div data-role="controlgroup" data-type="horizontal" data-mini="true" style="margin-left: auto; margin-right: auto; width: 100%; text-align: center;">
    <input type="checkbox" id="captureImage" name="add_image" class="custom" />
    <label for="captureImage" data-icon="checkbox">Image</label>
    <input type="checkbox" id="captureAudio" name="add_audio" class="custom" />
    <label for="captureAudio" data-icon="checkbox">Audio</label>
    <input type="checkbox" id="captureVideo" name="add_video" class="custom" />
    <label for="captureVideo" data-icon="checkbox">Video</label>
</div>

的Javascript

$("#captureImage").live("change", function() {
    // $("#captureImage").prop('checked', false); // Here Work

    if($("#captureImage:checked").val() !== undefined) {
            navigator.device.capture.captureImage(function(mediaFiles) {
            console.log("works");
        }, function(exception) {
            $("#captureImage").prop('checked', false); // Not Works Here
            _callback.error(exception);
        }, {limit: 1});
    }
});

/*
$("#captureAudio").live("change", function() {
    if($("#captureAudio:checked").val() !== undefined) {
            navigator.device.capture.captureAudio(function(mediaFiles) {
            console.log("audio");
        }, function() {
            $("#captureAudio").removeAttr('checked');
            _callback.error;
        }, {limit: 1});
    }
});

$("#captureVideo").live("change", function() {
    if($("#captureVideo:checked").val() !== undefined) {
            navigator.device.capture.captureVideo(function(mediaFiles) {
            console.log("video");
        }, function(exception) {
            $("#captureVideo").prop('checked', false);
            _callback.error(exception);
        }, {limit: 1});
    }
});
*/

9 个答案:

答案 0 :(得分:75)

...试

$("#captureAudio").prop('checked', false); 

答案 1 :(得分:50)

这两项都应该有效:

$("#captureImage").prop('checked', false);

和/或

$("#captureImage").removeAttr('checked');

......你们可以一起尝试。

答案 2 :(得分:6)

请尝试检查

$('#captureImage').attr("checked",true).checkboxradio("refresh");

并取消选中

$('#captureImage').attr("checked",false).checkboxradio("refresh");  

答案 3 :(得分:2)

尝试:

$("#captureAudio")[0].checked = false;

答案 4 :(得分:1)

您可以尝试$(this)

$("#captureAudio").live("change", function() {
    if($(this).val() !== undefined) { /* IF THIS VALUE IS NOT UNDEFINED */
            navigator.device.capture.captureAudio(function(mediaFiles) {
            console.log("audio");
        }, function() {
            $(this).removeAttr('checked'); /* REMOVE checked ATTRIBUTE; */
            /* YOU CAN USE `$(this).prop("checked", false);` ALSO */
            _callback.error;
        }, {limit: 1});
    }
});

答案 5 :(得分:0)

尝试类似FIDDLE

的内容
    try
      {
        navigator.device.capture.captureImage(function(mediaFiles) {
        console.log("works");
         });
      }

    catch(err)
      {
        alert('hi');
        $("#captureImage").prop('checked', false);

      }

答案 6 :(得分:0)

for-each loop.removeAttr()checked等布尔属性上使用selected也会将相应的命名属性设置为readonly

因此删除了此选中的属性

false

答案 7 :(得分:0)

发生错误时,我将<context-param> <param-name>keycloak.config.resolver</param-name> <param-value>my.package.CustomKeycloakResolver</param-value> </context-param> 的prop属性用于unchecked。 您无需将remove属性用于未选中复选框。

checkbox

对我来说很好。希望它也对您有用。

答案 8 :(得分:-8)

抱歉,我用上面的代码解决了我的问题:

$("#captureImage").live("change", function() {
    if($("#captureImage:checked").val() !== undefined) {
        navigator.device.capture.captureImage(function(mediaFiles) {
            console.log("works");
        }, function(exception) {
            $("#captureImage").removeAttr('checked').checkboxradio('refresh');
            _callback.error(exception);
        }, {});
    }
});