2012-08-15 56 views
0

我有以下表單字段:重複用戶的電子郵件輸入字段爲用戶名字段(剝離一切,包括和之後「@」)

<label for="user_email"><?php _e('Your Email'); ?>: </label> 
<input type="text" name="user_email" value="<?php echo esc_attr(stripslashes($user_email)); ?>" size="25" id="user_email" class="required email" tabindex="102" /> 

<label for="user_login"><?php _e('Username'); ?>: </label> 
<input type="text" name="user_login" value="<?php echo esc_attr(stripslashes($user_login)); ?>" size="20" id="user_login" tabindex="101" class="required" /> 

有沒有什麼辦法讓USER_LOGIN字段從實時填充輸入到user_email(理想情況下是字母,如果沒有,在不重點之後),在@符號之前停止,以便當用戶將「[email protected]」填入user_email字段時,user_login字段將自動填入「example 「?

我想最終將用戶名字段設置爲隱藏,但希望看到它是否首先可見。

+1

如果你使它隱藏那麼不能兩個人有相同的用戶名? [email protected]和[email protected] – Timm 2012-08-15 10:37:35

+0

http://www.php.net/manual/en/function.explode.php – 2012-08-15 10:41:05

+0

@Tim是對的。我不認爲隱藏該領域是一個好主意,請參閱我的答案瞭解詳情。 – 2012-08-15 10:47:23

回答

0

是的,你可以聽的關鍵事件和值設置爲這樣的其他領域:

$('#user_email').keyup(function(){ 
    var email = $('#user_email').val(); 
    var index = email.indexOf('@'); 
    var username = index >= 0 ? email.substring(0, index) : email; 
    $('#user_login').val(username);  
});​ 

See this fiddle

我認爲這個功能可能是得心應手提出了一些用戶名,但用戶應該能夠覆蓋它。也許他想要一個不同的名字或名字已經被採用了。否則,您可以使用整個電子郵件地址和用戶名,例如facebook。

此外,如果您隱藏用戶名字段,您可以將其忽略並使用PHP從服務器端的電子郵件地址獲取用戶名。請記住,用戶可以向您發送一些其他值,只需通過瀏覽器包含的工具操作頁面即可。或者,也許JavaScript被禁用,並且該字段將爲空。

簡而言之:你應該知道該領域,並讓用戶使用它,或者只是完全刪除它。根據需要對KEYUP或其他相關行動

0

火這樣的:

$('#user_login').val($('#user_email').val().split('@')[0]); 

你應該做出改變可能:

設置:

var userNoEdit = true; 

在電子郵件的事件變化:

if(userNoEdit){ 
    $('#user_login').val($('#user_email').val().split('@')[0]); 
} 

上的用戶名的情況下手動更改

userNoEdit = false; 
相關問題