登録フォームを改良しており、jQuery を使用してフォームを簡素化しようとしています。
Teachers
サイトへのユーザーは、 のいずれか、Donors
または両方 である可能性があります。Teachers
必要のないフィールドがDonors
あり、その逆もあります。そのため、フォームにすべてのフィールドを詰め込み、教育レベルを尋ねることで海外のユーザーを混乱させるのではなく、ドロップダウン リストを実装して、ユーザーが自分の役割を選択できるようにし、固有の必須フィールドがappend()
メソッドを介して表示されるようにしました。
これは私がこれまでに構築したフォームです。
<g:formRemote name="register" url="[controller:'user', action:'register']" onSuccess="showFields()">
<dl>
<dt>User name</dt>
<dd><g:textField name="username" value ="${user?.username }"/></dd>
<dt>Password</dt>
<dd><g:passwordField name="password" value = "${user?.password }"/></dd>
<dt>Repeat Password</dt>
<dd><g:passwordField name="passwordRepeat" value = "${user?.passwordRepeat }" /></dd>
<dt>Account Type</dt>
<dd>
<g:select name="role" from="${['Teacher', 'Donor', 'Both'] }"/>
</dd>
</dl>
<input type="submit" value="Register" />
</g:formRemote>
そしてスクリプトは
<script type="text/javascript">
$('#role').change(function(){
var user = $('#role option:selected').text();
alert(user);
if (user == 'Teacher'){
} else if (user == 'Donor'){
} else {
}
});
</script>
firebug を使用して、選択リストに id があることを確認しましたrole
が、関数は起動していません。実際、私がどのような選択をしても、完全に無視されます。
なぜこうなった?