올바른 SLAK이 맞는지, 페이지 수명주기를 오해하고있는 것입니다. 자바 스크립트 코드는 의 자리에 있어야 전에 저장을 클릭하십시오. 설명 된 예제에서 사용자는 제목/이름을 변경하고 다른 이름으로 저장을 클릭 한 후 자바 스크립트 코드가 버튼에 적용됩니다. 두 번째로 다른 이름으로 저장을 클릭하면 이전 예제의 유효성 검사 결과가 나타납니다.
옵션 1 : 발리 제어
에게이 문제를 해결하는 가장 간단한 방법을 사용하여이 값을 비교하는 RegularExpressionValidator 컨트롤을 사용하는 것입니다.
마크 업 조각 : 코드 숨김 양식 필드 한 번에
<asp:Label ID="lblName" runat="server" Text="Name: " />
<asp:TextBox ID="txtName" runat="server" />
<asp:RegularExpressionvalidator ID="valName" runat="server" ControlToValidate="txtName" ErrorMessage="You must change the name before saving" Display="Dynamic" />
<asp:Button ID="btnSaveAs" runat="server" OnClick="btnSaveAs_Click" Text="Save As" CausesValidation="True" />
(앨범 명 등) 바인딩이 실행 :
valName.ValidationExpression = string.Format("[^{0}]", Regex.Escape(lblName.Text));
위의 정규 표현식이 유효합니다 거기에 무엇이 있었는지를 제외한 모든 입력에 대해. 사용자가 앨범 이름의 텍스트를 변경하면 저장 버튼이 올바르게 적용됩니다. 그렇지 않으면 유효성 검사기가 시작되어 페이지에서 메시지를 변경해야한다는 메시지를 표시합니다.당신이 원하는대로
protected void btnSaveAs_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
//do you save actions as needed
}
}
또한 계속하여 귀하의 확인 상자를 사용할 수 있습니다 페이지가 확인 된 경우에만 발생하기 때문에
그런 다음, 단지 값을 저장하기위한 저장 버튼의 OnClick
이벤트를 처리 하는 중입니다.
protected void Page_Load(object sender, EventArgs e)
{
btnSave.OnClientClick = "return confirm('Are you sure you wish to change the name?');";
}
위의 내용은 정상적으로 작동합니다.
옵션 2 : 또 다른 접근 방법이 아래에 나열되어 완전히 클라이언트 측 유효성 검사를하고 싶었다 경우 클라이언트 측 유효성 검사 기능
를 사용하여, 당신은하지만 훨씬 더 복잡 할 것입니다 수 있습니다. 당신이해야 할 일은 완벽한 클라이언트 검증 기능을 등록하는 것입니다. Page_PreRender 동안 뒤에 코드에서
:이 도움이
protected void Page_PreRender(object sender, EventArgs e)
{
//define the script
string script = @"
function validateAlbumName(oldName, textBoxId) {
//get the textbox and its new name
var newName = document.GetElementById(textBoxId).value;
//compare the values
if (newName === oldName) {
//if the name hasn't changed,
alert('You must change the name of the album');
return false;
}
return confirm ('Are you sure you want to save the playlist ' + newName);
}
";
//register the client script, so that it is available during the first page render
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "SaveAsValidation", script);
//add the on client click event, which will validate the form fields on click the first time.
btnSaveAs.OnClickClick = string.Format("return validateAlbumName('{0}','{1}');", txtAlbumName.Text, txtAlbumName.ClientID);
}
희망. 위의 몇 가지 구문 오류가있을 수 있습니다. 그냥 빨리 던져 버렸습니다.
Xaisoft, 나는 아래의 대답에 많은 노력을했습니다. 정확하고 유용하다고 생각되면 답변으로 표시하도록하십시오. –
죄송합니다. 아직 테스트 할 기회가 없었습니다. 나는 조금 안에 들어갈 것이다. 내가하는대로 곧 표시하겠습니다. – Xaisoft