2010-03-11 16 views
10

Sto usando Jeditable (postando su CakePHP) per l'inserimento sulla mia pagina. Voglio che gli utenti compilino solo numeri nei campi Jeditable, quindi la mia idea era di usare anche lo jQuery validation plugin per convalidare se si usano solo numeri, lo uso già in altre parti del mio sito.Validate campo Jeditable

Jeditable crea dinamicamente un modulo con un input quando si fa clic sul div, quindi sembra che non ci sia nulla per cui convalida Jquery e non sembra funzionare normalmente.

Sono in grado di impostare il nome della classe del modulo tramite Jeditable (ha solo una classe atrribute), l'input creato ha solo un attributo name che ha come valore predefinito "nome".

Le mie domande:

  • questo è un buon modo per richiedere solo numeri?
  • Se sì, come farlo funzionare con Jquery convalidare
  • In caso contrario, quale sarebbe una soluzione migliore?

Grazie in anticipo, e non vedo l'ora di tutte le risposte che potrei ottenere;)

risposta

13

È possibile utilizzare il plugin di convalida jQuery direttamente in jeditable per convalidare i campi del modulo

$('.edit').editable(your_url, { 
    onsubmit: function(settings, td) { 
     var input = $(td).find('input'); 
     $(this).validate({ 
      rules: { 
       'nameofinput': { 
        number: true 
       } 
      }, 
      messages: { 
       'actionItemEntity.name': { 
        number: 'Only numbers are allowed' 

       } 

      } 
     }); 

     return ($(this).valid()); 
    } 
}); 
+0

Si dichiara input ma non usarlo, qual è il punto? –

3

È possibile utilizzare l'evento onSubmit in Jeditable e verificare se l'ingresso ha solo numeri. Questo è solo un esempio, io non l'ho provato:

function isNumeric(value) { 
    if (value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false; 
    return true; 
} 

$('.edit').editable(your_url, { 
    onsubmit: function(settings, original) { 
     if (isNumeric(original)) { 
      return true; 
     } else { 
      //display your message 
      return false; 
     } 
    } 
}); 
+0

Grazie, non ho avuto il tempo di testare davvero, in il mio primo tentativo non ha funzionato (sempre restituito falso) ma come detto, non ho avuto davvero il tempo di provarlo correttamente, molte grazie per la tua risposta comunque! :) – JanWillem

+0

Sembra che Jeditable sottopone se si torna falsa in ogni caso: http://markmail.org/message/cgagaclwtk6bt4yv La modifica codice di cui al l'URL non è più disponibile :(Spero che qualcuno mi può aiutare a ottenere questo funziona! – JanWillem

+0

Questo funziona nella versione corrente di jEditable. –

10

questo codice ha funzionato per me

function isNumeric(value) { 
    if (value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false; 
    return true; 
} 

$('.edit').editable(your_url, { 
    onsubmit: function(settings, td) { 
     var input = $(td).find('input'); 
     var original = input.val(); 
     if (isNumeric(original)) { 
      console.log("Validation correct"); 
      return true; 
     } else { 
      console.log("Validation failed. Ignoring"); 
      input.css('background-color','#c00').css('color','#fff'); 
      return false; 
     } 
    } 
}); 
+0

Oooh. Utilizzo di console.log * come * – jonasespelita

+0

$ (td) .find ('input'); è necessario solo per i dati della tabella? – shennyL

0

Per il mio progetto ho cambiato il nome della funzione in isAcceptable perché concedo parentesi, trattini, punti per far parte del numero di telefono.

function isAcceptable(value) { 
    if (value == null || !value.toString().match(/^[-+]?\d*\.?[\d\s().-]+$/)) return false; 
    return true; 
} 
-1

jquery.editable.js aperte e trovare: funzione onedit

/* setup some functions */ 
     var onedit = settings.onedit || function() { }; 

e fare un po 'come:

$('.edit').editable(your_url, { 
    onedit:function(){ 
      alert("original value"+$(this).text()); 
    }, 
}); 
Problemi correlati