Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

150
Visualizações
evento de clic de botón de opción knockoutjs

tengo algo de html:

 <input name="Test" type="radio" value="yes" data-bind="checked: Page2.Traded, click: Traded_Yes" /> Yes <input name="Test" type="radio" value="no" data-bind="checked: Page2.Traded, click: Traded_No" /> No

Y algo de Javascript:

 self.Traded_Yes = function(data) { $("#Page2Symbol").prop("disabled", false); return true; }; self.Traded_Yes = function(data) { $("#Page2Symbol").prop("disabled", true); return true; };

Todo funciona bien en la interfaz de usuario en términos de deshabilitar id: Page2Symbol y guardar los datos correctos; sin embargo, la interfaz de usuario no muestra el botón de opción cambiando entre Sí/No cuando hago clic en cualquiera de las opciones. return true para permitir la acción de clic predeterminada como se describe aquí: https://knockoutjs.com/documentation/click-binding.html , sin embargo, la interfaz de usuario no cambia la selección cuando hago clic en cualquiera de los radios. ¿Alguna idea de lo que está pasando?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No puedo reproducir su problema, pero podría tener algunos buenos consejos para solucionar el problema que pueda tener:

Cuando se trabaja con knockout, se recomienda hacer que todas las interacciones con el DOM pasen por un enlace de knockout. Para deshabilitar y habilitar un botón, existen los enlaces de disable y enable . Así es como los usas:

Usando el enlace de disable :

Agrega una propiedad computed a su modelo de vista que define si se deshabilita según el valor de Traded .

Esto asegura que no necesita ese enlace de clic y puede deshacerse de cualquier referencia de id .

 const self = {}; self.Page2 = { Traded: ko.observable("yes") }; self.disablePage2Symbol = ko.pureComputed(() => self.Page2.Traded() === "yes"); ko.applyBindings(self);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script> <button data-bind="disable: disablePage2Symbol">Page 2 button</button> <label> <input type="radio" value="yes" data-bind="checked: Page2.Traded" /> Yes </label> <label> <input type="radio" value="no" data-bind="checked: Page2.Traded" /> No </label>

Reproducción fallida del problema:

Este fragmento muestra que su código original debería funcionar, aunque es un poco antipatrón.

 const self = {}; self.Traded_Yes = function(data) { $("#Page2Symbol").prop("disabled", false); return true; }; self.Traded_No = function(data) { $("#Page2Symbol").prop("disabled", true); return true; }; self.Page2 = { Traded: ko.observable("yes") }; ko.applyBindings(self);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script> <button id="Page2Symbol">Page 2 button</button> <input name="Test" type="radio" value="yes" data-bind="checked: Page2.Traded, click: Traded_Yes" /> Yes <input name="Test" type="radio" value="no" data-bind="checked: Page2.Traded, click: Traded_No" /> No

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda