2010-10-27 18 views
10

Mam pole wyboru i pojawia się następujący tekst:
[pole] Zgadzamjquery - jak używać ErrorPlacement dla konkretnego elementu?

Jeśli pole nie zostanie kliknięty przy składaniu, obecny sposób pokazano msg błędzie mam to (używam errorElement: „div”);

[pole wyboru]
To pole jest wymagane.
Zgadzam się **

Chciałbym raczej;
[pole] Zgadzam
To pole jest wymagane

Każdy pomysł, w jaki sposób, aby to zrobić ?.

Owijacz html dla danego pola wyboru i elementów tekstowych, które posiadam, jest podobny do tego;
[div] [pole] Ja się zgadzam [/ div] [div] [/ div]

Próbowałem errorPlacment: następująco chcąc zastosować go tylko dla tego jednego elementu;

...    
messages: { 
    usage_terms: { 
     required: "Must agree to Terms of Use.", 
    //errorElement: "div" 
    errorPlacement: function(error, element) { 
     error.appendTo(element.parent("div").next("div")); 
     } 
    } 
} 
... 


To nie działa. Dowolny pomysł?.

Odpowiedz

22

errorPlacement to nie pod spodem wiadomości (jako opcja), to opcja globalna, więc zamiast tego powinno to wyglądać tak:

messages: { 
    usage_terms: "Must agree to Terms of Use." 
} 
errorPlacement: function(error, element) { 
    if(element.attr("name") == "usage_terms") { 
    error.appendTo(element.parent("div").next("div")); 
    } else { 
    error.insertAfter(element); 
    } 
} 

Oto, jesteśmy po prostu sprawdzając nazwę elementu przy podejmowaniu decyzji, gdzie to idzie , możesz jednak zrobić jeszcze jedną kontrolę, na przykład podając wszystkie, które zachowują się tak jak ta klasa, i robiąc element.hasClass("placeAfter").

+0

działa jak czar, dzięki! – freedayum

+1

+1, ładne wyjaśnienie – SagarPPanchal

0

plik html

<label for="Q008" class="control-label titular">Question text 008 by example</small></label> 
<input type="text" class="form-control" name="Q008" id="Q008" maxlength="500" /> 
<div id="Q008error"></div> 

<label class="control-label titular">Question text 009 by example</label> 
<div class="controls"> 
    <input type="checkbox" name="Q009" id="Q009_1" value="1" /> 
    <label for="Q009_1">Text 91</label> 
</div> 
<div class="controls"> 
    <input type="checkbox" name="Q009" id="Q009_2" value="2" /> 
    <label for="Q009_2">Text 92</label> 
</div> 
<div class="controls"> 
    <input type="checkbox" name="Q009" id="Q009_3" value="3" /> 
    <label for="Q009_3">Text 93</label> 
</div> 
<div class="controls"> 
    <input type="checkbox" name="Q009" id="Q009_4" value="4" /> 
    <label for="Q009_4">Text 94</label> 
</div> 
<div class="controls"> 
    <input type="checkbox" name="Q009" id="Q009_5" value="5" /> 
    <label for="Q009_5">Text 95</label> 
</div> 
<div class="controls"> 
    <input type="checkbox" name="Q009" id="Q009_6" value="6" /> 
    <label for="Q009_6">Text 96</label> 
</div> 
<div id="Q009error"></div> 

plik jquery validate

errorPlacement: function(error, element) { 
    var elementForm = "", containerError = ""; 
    offset = element.offset(); 
    elementForm = element.attr("name"); 
    containerError = "#" + elementForm + "error"; 
    error.prependTo(containerError); 
    error.addClass('message'); 
} 
Powiązane problemy