3

フォームのテキスト入力に onfocus と onblur を追加しました。

<form id='AddCameraFormWebcam' name='' method='post' action='<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?>'>
    <label for="CameraName">Camera name:&nbsp;</label>
    <input id="CameraName" name="camera_name" size="24" maxlength="36" value="Enter label for camera" onfocus="if(this.value==this.defaultValue){this.value=''; this.style.color='#000';};" onblur="if(this.value==''){this.value=this.defaultValue; this.style.color='#666';}" />
...
    <button type='submit' class='submit_camera' name='addcamera' value='Add'>Add</button>

</form>

これは、jquery で行った検証を破るようになりました。

$(".submit_camera").click(function() {
    $("#AddCameraFormWebcam").validate({
        rules: {
            camera_name: {
                required: true,
                cameravalidation: true,
                minlength: 3,
                maxlength: 32
            }
        },
        messages: {
            camera_name: {
                required: "Enter a label for your camera",
                minlength: jQuery.format("At least {0} characters required!"),
                maxlength: jQuery.format("Maximum {0} characters allowed!")
            }
        }
    });
});

Enter label for cameraがサーバーに送信されるため、カメラ名を入力しなくても送信できるようになりました。どうすればエラーを表示できますか?

4

1 に答える 1

1

最も簡単な方法は、カスタム ルールを作成することです (すでにカメラ検証をお持ちですか?):

var enterText =  $("#CameraName")[0].defaultValue; // "Enter label for camera";

jQuery.validator.addMethod("cameravalidation", function(value, element) {
    return value != enterText && value.length > 0;
}, "Enter a label for your camera");

$("#AddCameraFormWebcam").validate({
        rules: {
            camera_name: {
                cameravalidation: true,
                minlength: 3,
                maxlength: 32
            }
        },
        messages: {
            camera_name: {
                minlength: "At least 3 characters required!",
                maxlength: "Maximum 32 characters allowed!"
            }
        }
    });

ここのフォームに基づく jsfiddle: http://jsfiddle.net/bSQQx/2/

于 2012-06-25T19:19:56.723 に答える