2016-04-11 7 views
1

Ich benutze unten Bootstrap als Dropdown-Picker, der dann mit einer zugehörigen jQuery-Funktion das gewählte Feld im inputtype="text" anzeigt. Aber Benutzer können immer noch ihre eigenen in das Eingabefeld schreiben, was ich gerne vermeiden würde. Ich habe versucht, das disabled Attribut für das Eingabefeld zu verwenden, aber wenn ich das tue, ignoriert das jQuery Validate Plugin es einfach und erteilt Erlaubnis, auch wenn es leer ist.jQuery Validiere und deaktiviere das Eingabefeld

Ist es möglich, ein Eingabefeld mit type="text" zu deaktivieren, ohne das Attribut disabled zu verwenden, damit ich noch jQuery Validate verwenden kann.

<div class="form-group"> 
    <div class="input-group"> 
     <div class="input-group-btn"> 
       <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Choose<span class="caret"></span></button> 
       <ul class="dropdown-menu"> 
        <li><a href="#" id="a">1</a></li> 
        <li><a href="#" id="b">2</a></li> 
        <li><a href="#" id="c">3</a></li> 
        <li><a href="#" id="d">4</a></li> 
        <li role="separator" class="divider"></li> 
        <li><a href="#" id="e">5</a></li> 
       </ul> 
     </div> 
     <input type="text" id="abc" autocomplete="off" name="abc" placeholder="Select *" class="form-control" aria-label="..."> 
    </div> 
</div> 
+0

Also wo ist das relevante JavaScript? – Sparky

Antwort

5

Es gibt keine direkte Lösung verwenden müssen ..., wenn das Feld „disabled“ über das disabled Attribut ist, wird die jQuery Validate-Plugin immer ignorieren. (Logischerweise hat es keinen Sinn, etwas zu validieren, das der Benutzer nicht bearbeiten kann.)

Es gibt jedoch einen Workaround. Wenn Sie das Attribut readonly anstelle von disabled verwenden, kann es validiert werden.

<input type="text" name="abc" readonly="readonly" /> 

DEMO: http://jsfiddle.net/85pu1oe5/

0

Egal, wie od diese Frage ist - es eine Abhilfe ist das ganz einfach. Warum nicht ein verstecktes Feld zusätzlich zu dem deaktivierten verwenden, das von jquery.validate.js ignoriert wird?

z.B.

<input type="text" name="name" class="form-control" value="<?php echo htmlentities($user['name']); ?>" disabled> 
<input type="hidden" name="name" class="form-control" value="<?php echo htmlentities($user['name']); ?>"> 

funktioniert gut für mich. Gleiches gilt für

<select style="display:none;"><option value="sample">Sample</option></select> 

Anzeige: keine; Versteckt das Element vollständig (Leerzeichen und alles). Es ist noch aktiviert und somit werden seine Daten noch gesendet. Probieren Sie es aus.

Sicherstellen, ignorieren: ".ignore", wird zu validate.js hinzugefügt, da alle versteckten Felder aktiviert werden.

Verwandte Themen