2012-11-26 14 views
28

Potrzebuję usunąć atrybut "sprawdzony" z jednego pola wyboru, gdy wystąpią błędy.Usuń atrybut "zaznaczone" z pola wyboru

Funkcja .removeAttr nie działa. Dowolny pomysł? :/

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}); 
    } 
}); 
*/ 
+0

$ ("# captureImage: zaznaczone"). Val() zawsze da ci val lub wyłączyć jeszcze nie masz zdefiniowanej wartości na nim –

+0

@rajeshkakawat nr $ ("#captureImage"). val() różni się od $ ("# captureImage: checked"). val() – FabianoLothor

+0

Tak, jest inny, ale warunkowy działa. – FabianoLothor

Odpowiedz

-5

Przykro mi rozwiązać mój problem z powyższym kodzie:

$("#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); 
     }, {}); 
    } 
}); 
58

Spróbuj ...

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

Nie działa w oddzwanianiu funkcja błędu po prostu działa funkcja captureImage. – FabianoLothor

1

Spróbuj:

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

Nie działa w funkcji callbackError:/ – FabianoLothor

+0

Zgaduję, że robisz źle warunek. Spróbuj: 'if ($ (" # captureImage ") [0] .checked)'. Unikaj używania tych pseudo-selektorów jQuery (': checked'). – macool

+0

@FabianoLothor również unikać podnoszenia Wyjątków. Nawet coś takiego jak 'console.error' może spowodować awarię twojego kodu. (Stało mi się) – macool

0

spróbować czegoś tak FIDDLE

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

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

     } 
+0

Próbuję tutaj, ale nie wstęp na połów. :/ – FabianoLothor

5

Spróbuj to sprawdzić

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

i odznacz

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

Oba te elementy powinny działać:

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

I/LUB

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

... można spróbować zarówno razem.

+0

Tylko druga opcja zadziałała dla mnie, ale nie wiem dlaczego. Czy to dlatego, że ustawiłem sprawdzany atrybut za pomocą metody attr, na przykład: radio.attr ("sprawdzone", "sprawdzone")? –

+0

@ ErikČerpnjak yes then – itsazzad

+1

** UWAGA ** za [.prop ("sprawdzone", fałszywe) lub .removeAttr ("sprawdzone")?] (Https://stackoverflow.com/q/6169826/1366033), że * * .prop ("sprawdzone", false) '** jest zawsze lepsze od' .removeAttr ("sprawdzone") ' – KyleMit

0

można spróbować $(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}); 
    } 
}); 
0

użyciu .removeAttr() w logiczną atrybutu takie jak checked, selected lub readonly również ustawić odpowiadającą nazwie właściwość false.

Stąd usunięte to sprawdzone atrybut

$("#IdName option:checked").removeAttr("checked"); 
Powiązane problemy