Я пытаюсь сделать функцию нажатой кнопкой. При щелчке функция проходит через каждый элемент input type = text, присваивает свой атрибут value переменной, если этот метод = null или variable = "" метод вызова подтверждают ("вы уверены, что хотите сохранить пустую строку"). Здесь мой код/псевдо-код:
<script type="text/javascript">
function isInputEmpty() {
$("#btnSave").click(function(){
$('input[type=text]').each(function(){
var x = $(this).attr('value');
var bool = false;
if(x == null || x == "")
{
bool = true;
}
else
{
send the request
}
if(bool == true)
{
if(confirm('Are you sure you want to save a blank URL?'))
{
send the request
}
else
{
do nothing or cancel the request
}
}
else
{
send the request
}
}
}
</script>
Вот мой код кнопки asp:
<asp:Button ID="btnSave" runat="server" Text="Save"/>
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. заранее спасибо
Для проблемы с идентификатором, если вы используете ASP.Net 4.0 +, установите ClientIDMode=Static
<asp:Button ID="btnSave" runat="server" ClientIDMode="Static" Text="Save"/>
JS
<script type="text/javascript">
function isInputEmpty() {
$("#btnSave").click(function(){
$('input[type=text]').each(function(){
var x = this.value;
var bool = false;
if(x === null || x === "")
{
bool = true;
}
else
{
send the request
}
if(bool === true)
{
if(confirm('Are you sure you want to save a blank URL?'))
{
LoadData();
}
else
{
return;//do nothing
}
}
else
{
send the request
}
}
}
function LoadData()
{
$.ajax({
type: "GET",
url: 'page.aspx',
timeout: 1000,
success:function(data){
//do work
},
error:function(jqxhr, status){
if(status==="error"){
//handle error
}
});
}
</script>
Поскольку это ASP.NET, этот идентификатор будет отображаться другим, попробуйте захватить идентификатор клиента (если JS находится в одном файле, а если нет, используйте уникальный класс и назначьте обработчик через это)
$("#<%=btnSave.ClientID%>").click(function() {
$("input:text").each(function() {
if (!this.value.length) {
var confirm = confirm('are you sure you want to save a blank row')
..
}
});
});
this.value
. $(this).val()
достаточно плох, не говоря уже о $(this).attr('value')
который он использовал.
Вы также можете сделать, как показано ниже.
<script type="text/javascript">
function isInputEmpty() {
var bool = false;
$("#btnSave").click(function () {
$('input[type=text]').each(function () {
var x = $(this).attr('value');
if (x == null || x == "") {
bool = true;
}
});
if (bool == true) {
if (confirm('Are you sure you want to save a blank URL?')) {
//send the request
}
else {
//do nothing or cancel the request
}
}
else {
//send the request
}
});
}
</script>
Не совсем понятно, каков ваш вопрос, но другие ответы здесь по праву сосредоточены на проблеме ID и.NET-сетях, изменяющих идентификатор элемента.
Другие предлагаемые решения хороши, но есть и другой способ, и это поиск по частичному идентификатору. Если для параметра clientIDmode не установлено значение static (или если вы pre.Net 4.0), то идентификатор.NET всегда будет содержать исходный идентификатор после подчеркивания, поэтому вы можете найти свой элемент с помощью jquery следующим образом:
$("[id$='_btnSave']").click(function(){ ...
LoadData
для загрузки данных. проверить это не