Во-первых, то, что у вас есть, совершенно верно . Единственные изменения, которые я могу предложить, это использовать .data()
и $.data()
, чтобы сделать его действительным (без недопустимых атрибутов). Вы можете связать обработчики .focus()
и .blur()
, чтобы избежать дублирования выбора. Также нет необходимости в #loginf
перед другим селектором идентификаторов ... они должны быть уникальными и просто #ID
имеет ярлык в коде ядра jQuery.
Кроме того, я немного изменил его, чтобы сделать его более расширяемым, чтобы вы могли добавлять столько, сколько хотите, с меньшим количеством кода, как вы делаете, например:
var types = { "1": { action: "login1.php",
user: { id: "userid", val: "Username" },
pass: { id: "password", val: "password" } },
"2": { action: "login2.php",
user: { id: "email", val: "Email" },
pass: { id: "passed_password", val: "password" } }
};
$('#logintype').change(function() {
var type = types[$(this).val()];
$('#loginf').attr('action', type.action);
$('#user').attr('name', type.user.id).data('defaultValue', type.user.val).val(type.user.val);
$('#pass').attr('name', type.pass.id).data('defaultValue', type.pass.val).val(type.pass.val);
}).change();
$('.textbox').focus(function(){
if ($(this).val() == $.data(this, 'defaultValue')) $(this).val('');
}).blur(function(){
if ($(this).val() == '') $(this).val($.data(this, 'defaultValue'));
});
Вы можете попробовать здесь , лично мне просто нравится этот стиль на случай, если вам понадобится добавить третий вариант позже, это делает его очень быстрым / простым (хотя, возможно, ваш текущий метод все еще делает это довольно просто). Однако, по мере того, как вы будете добавлять больше, вы будете сохранять все больше и больше кода на этом маршруте по сравнению с вашим текущим способом, но он полностью зависит от вашего стиля, в любом случае это не имеет большого значения.