Passing element id to jQuery from html loop - html

I am struggling to make it work to pass element id to Jquery from html foreach loop. I have a table and I am getting the details from database. so in each loop we are getting new data for new users. I am using bootstrap switch as seen below :
<form method="post" id="toggleForm">
<fieldset>
<div class="form-group">
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" id="customSwitch1" name='machine_state' status="{{$detail['status']}}">
<input type="hidden" id="id" value="{{$detail['id']}}" >
<label class="custom-control-label" id="statusText" for="customSwitch1"> </label>
<llittle id ="littleupdate"></llittle>
</div>
</div>
</fieldset>
</form>
In the Jquery part we have three functions as shown below:
function putStatus() {
var id = $("#id").val();
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
type: "post",
url: "/admin/check-status",
data: {id : id},
success: function (result) {
if (result == "true") {
$('#customSwitch1').prop('checked', true);
statusText(1);
} else {
$('#customSwitch1').prop('checked', false);
statusText(0);
}
}, error:function (){
}
});
}
function statusText(status_val) {
if (status_val == 1) {
var status_str = "Active";
} else {
var status_str = "Inactive";
}
document.getElementById("statusText").innerText = status_str;
}
function onToggle() {
$('#toggleForm :checkbox').change(function () {
if (this.checked) {
//alert('checked');
updateStatus(1);
// statusText(1);
} else {
//alert('NOT checked');
updateStatus(0);
// statusText(0);
}
});
}
function updateStatus(status_val) {
var id = $('#id').val();
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
type: "POST",
url: "/admin/set-status",
data: {status: status_val, id:id},
success: function (result) {
if(result =="true") {
if(status_val == 1) {
$('#customSwitch').prop('checked', true);
// $("#updatedAt").fadeIn(0).html("<font color='green' font size='2px'> - Updated.. User Activated!</font>").fadeOut(1500);
// $( '#littleupdate').fadeIn(0).html("<font color='green' font size='1px'> Updated.. </font>").fadeOut(1500);
statusText(1);
} else if(status_val == 0){
$('#customSwitch').prop('checked', false);
// $("#updatedAt").fadeIn(0).html("<font color='green' font size='2px'> - Updated.. User Deactivated!</font>").fadeOut(1500);
// $( '#littleupdate').fadeIn(0).html("<font color='green' font size='1px'> Updated.. </font>").fadeOut(1500);
statusText(0);
}
} else {
if(status_val == 1){
$('#customSwitch1').prop('checked', false);
$("#updatedAt").fadeIn(0).html("<font color='red'> - Error while updating!</font>").fadeOut(1500);
} else if(status_val == 0){
$('#customSwitch1').prop('checked', true);
$("#updatedAt").fadeIn(0).html("<font color='red'> - Error while updating!</font>").fadeOut(1500);
}
}
}, error:function (){
}
});
}
$(document).ready(function () {
//Called on page load:
putStatus();
onToggle();
statusText();
});
Html loop as a whole is looking like below:
#foreach($details as $detail)
<tr>
<td>
{{$detail['id']}}
</td>
<td>
{{$detail['name']}}
</td>
<td>
{{$detail['type']}}
</td>
<td>
{{$detail['email']}}
</td>
<td>
<img src="{{asset('/admin/images/avatars/'.$detail['image'])}}">
</td>
<td>
{{$detail['mobile']}}
</td>
<td>
<form method="post" id="toggleForm">
<fieldset>
<div class="form-group">
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" id="customSwitch1" name='machine_state' status="{{$detail['status']}}">
<input type="hidden" id="id" value="{{$detail['id']}}" >
<label class="custom-control-label" id="statusText" for="customSwitch1"> </label>
<llittle id ="littleupdate"></llittle>
</div>
</div>
</fieldset>
</form>
</td>
I really can't figure out the mechanism of passing the function to each loop element, as it only works correctly for the first instance in the table as can be seen in image below. Your help would be highly appreciated.

Because in loop , the id attribute is the same
In loop
<form method="post" id="toggleForm_{{$detail['id']}}">
<fieldset>
<div class="form-group">
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" id="customSwitch_{{$detail['id']}}" name='machine_state' status="{{$detail['status']}}">
<input type="hidden" class="statusForDetail" value="{{$detail['id']}}" >
<label class="custom-control-label" id="statusText_{{$detail['id']}}" for="customSwitch_{{$detail['id']}}"> </label>
<llittle id="littleupdate_{{$detail['id']}}"></llittle>
</div>
</div>
</fieldset>
</form>
function putStatus() {
$(".statusForDetail").each((index, element) => {
let id = $(element).val()
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
type: "post",
url: "/admin/check-status",
data: {id : id},
success: function (result) {
if (result == "true") {
$('#customSwitch_'+id).prop('checked', true);
statusText(1);
} else {
$('#customSwitch_'+id).prop('checked', false);
statusText(0);
}
}, error:function (){
}
});
});
}

Related

Three Google Form Submissions

I have three google forms on a page. Each form is linked to a tab on a single spreadsheet.
For now I have duplicated the working code from here: https://codepen.io/xergioalex/pen/ZNevvM
A single form was working fine, however now that there are three it no longer functions.
All inputs eg. "entry.472617792" should be correct.
Link to public Spreadsheet.
// Form01
$('#contact-form01').submit(function(event) {
event.preventDefault();
$('#feedback01').html('');
setTimeout(function() {
// Get data
var data = {
'entry.472617792': $('#form-name01').val(),
'entry.898916053': $('#form-phone01').val(),
'entry.1085111698': $('#form-message01').val()
};
// Validate form
var formSuccess = true;
Object.keys(data).forEach(function(key, index) {
if (!data[key]) {
formSuccess = false;
$('#feedback01').html('<label class="text-danger">Please complete all fields</label>');
}
});
if (formSuccess) {
// Send request
$.ajax({
url: 'https://docs.google.com/forms/u/2/d/e/1FAIpQLSfiJghWBgMBn-twEzVfeIWMQhyp_3oFa26r1bdA-A71n_3Enw/formResponse',
type: 'POST',
crossDomain: true,
dataType: "xml",
data: data,
success: function(jqXHR, textStatus, errorThrown) {
console.log('Enter on success');
$('#feedback01').html('<label class="text-success">Message sent!</label>');
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('Enter on error');
$('#feedback01').html('<label class="text-success">Message sent!</label>');
}
});
}
}, 300);
});
// Form02
$('#contact-form02').submit(function(event) {
event.preventDefault();
$('#feedback02').html('');
setTimeout(function() {
// Get data
var data = {
'entry.472617792': $('#form-name02').val(),
'entry.898916053': $('#form-phone02').val(),
'entry.1085111698': $('#form-message02').val()
};
// Validate form
var formSuccess = true;
Object.keys(data).forEach(function(key, index) {
if (!data[key]) {
formSuccess = false;
$('#feedback02').html('<label class="text-danger">Please complete all fields</label>');
}
});
if (formSuccess) {
// Send request
$.ajax({
url: 'https://docs.google.com/forms/u/2/d/e/1FAIpQLSfnPLSloZWtGXTqhexuJsb9LoEA9U8-uYGYj3Ex5SS5Nwty0w/formResponse',
type: 'POST',
crossDomain: true,
dataType: "xml",
data: data,
success: function(jqXHR, textStatus, errorThrown) {
console.log('Enter on success');
$('#feedback02').html('<label class="text-success">Message sent!</label>');
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('Enter on error');
$('#feedback02').html('<label class="text-success">Message sent!</label>');
}
});
}
}, 300);
});
// Form03
$('#contact-form03').submit(function(event) {
event.preventDefault();
$('#feedback03').html('');
setTimeout(function() {
// Get data
var data = {
'entry.472617792': $('#form-name03').val(),
'entry.898916053': $('#form-phone03').val(),
'entry.1085111698': $('#form-message03').val()
};
// Validate form
var formSuccess = true;
Object.keys(data).forEach(function(key, index) {
if (!data[key]) {
formSuccess = false;
$('#feedback03').html('<label class="text-danger">Please complete all fields</label>');
}
});
if (formSuccess) {
// Send request
$.ajax({
url: 'https://docs.google.com/forms/u/2/d/e/1FAIpQLSfK6S-GlcKsq8YCz4OBwlTsf9g8frbGouP4VGkyXiykaH1UMw/formResponse',
type: 'POST',
crossDomain: true,
dataType: "xml",
data: data,
success: function(jqXHR, textStatus, errorThrown) {
console.log('Enter on success');
$('#feedback03').html('<label class="text-success">Message sent!</label>');
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('Enter on error');
$('#feedback03').html('<label class="text-success">Message sent!</label>');
}
});
}
}, 300);
});
.container {padding-bottom:50px;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!--Form 01-->
<div class="container">
<h2>Form 01</h2>
<form method="post" id="contact-form01">
<input type="text" class="form-control" id="form-name01" placeholder="Name*"><br>
<input type="text" class="form-control" id="form-phone01" placeholder="Phone*"><br>
<textarea type="text" class="form-control" id="form-message01" placeholder="Message*"></textarea><br>
<button type="submit" class="btn btn-default">
Submit
</button>
<div id="feedback01"></div>
</form>
</div>
<!--Form 02-->
<div class="container">
<h2>Form 02</h2>
<form method="post" id="contact-form02">
<input type="text" class="form-control" id="form-name02" placeholder="Name*"><br>
<input type="text" class="form-control" id="form-phone02" placeholder="Phone*"><br>
<textarea type="text" class="form-control" id="form-message02" placeholder="Message*"></textarea><br>
<button type="submit" class="btn btn-default">
Submit
</button>
<div id="feedback02"></div>
</form>
</div>
<!--Form 03-->
<div class="container">
<h2>Form 03</h2>
<form method="post" id="contact-form03">
<input type="text" class="form-control" id="form-name03" placeholder="Name*"><br>
<input type="text" class="form-control" id="form-phone03" placeholder="Phone*"><br>
<textarea type="text" class="form-control" id="form-message03" placeholder="Message*"></textarea><br>
<button type="submit" class="btn btn-default">
Submit
</button>
<div id="feedback03"></div>
</form>
</div>

Submit form on modal does not work angular

I got a form on my modal, my plan was just to call a function for the submit but it doesn't do anything. The modal call is from my controller after clicking a submit button.
Controller
modal.popup({
title: "Title",
templateUrl:
"page.html",
size: "lg",
item: data,
});
Modal
popup: function(params) {
var modal;
modal = openOmniModal(
{
id: params.id,
item: params.item,
successCallback: function () {
if (
params.datatable &&
typeof params.datatable.refreshList === "function"
) {
params.datatable.refreshList();
}
if (
params.successCallback &&
typeof params.successCallback === "function"
) {
params.successCallback.apply(undefined, params.successCallbackParams);
}
$timeout(function () {
modal.close();
}, 1000);
},
errorCallback: function () {
if (
params.datatable &&
typeof params.datatable.refreshList === "function"
) {
params.datatable.refreshList();
}
if (params.errorCallback && typeof params.errorCallback === "function") {
params.errorCallback.apply(undefined, params.errorCallbackParams);
}
},
params: params.params,
close: function () {
modal.close();
},
modal: {
dismissable: true,
title: params.title || "",
subtitle: params.subtitle || "",
templateUrl: params.templateUrl,
},
},
params.windowClass || "modal-primary",
params.size
);
}
HTML
<form class="form" name="form" ng-submit="service.function(form, data)">
<div class="form-group">
<label for="exampleFormControlTextarea1">TextArea</label>
<textarea class="form-control" id="comment" rows="3" maxlength="1000"></textarea>
</div>
<div class="form-group row">
<div class="col-md-3">
<input type="submit" value="Cancel" id="btn-cancel" class="btn btn-block btn-outline" ng-click="close()">
</div>
<div class="col-md-3">
<input type="submit" value="Save" id="btn-save" class="btn btn-block btn-primary">
</div>
</div>
</form>
I've tried to add a handler on my controller this.submit but it still didn't work. Any ideas on what part I am wrong and what can I do to improve it?

Why input value is NULL when using Ajax?(ASP.NET CORE)

I do not have access to input values when using Ajax in View(MVC) but I have access to input values when not use Ajax. actually values is empty when use Ajax
When I use Ajax:
<form id="Form1" asp-action="Register" asp-controller="UserPanel" method="post">
<div class="row">
<div class="col-lg-5 col-md-5 col-sm-12 col-12 .sm-right" id="margin-top">
<span>Name:</span>
<input type="text" asp-for="Name" class="form-control">
</div>
<div>
<span>Number:</span>
<input type="text" asp-for="Number" class="form-control">
</div>
</div>
<input type="reset" value="send" id="ajax-button" class="btn btn-success btn-sm waves-effect waves-light submit-btn" />
</form>
Script:
<script>
$(document).ready(function () {
var url = '#Url.Action("Register", "UserPanel")';
var data = $('#Form1').serialize();
$('#ajax-button').click(function () {
debugger
$.ajax({
type: "POST",
data: data,
url: url,
contentType: 'application/json; charset=utf-8',
success: function (result) {
alert('Done');
},
error: function () {
alert("error");
}
});
})
})
</script>
I added tag helpers
#addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
#addTagHelper *, SmsWebClient
#using Microsoft.AspNetCore.Razor.TagHelpers;
Value is null before enter to ajax ,image:
Please Move the
var data = $('#Form1').serialize();
to below
$('#ajax-button').click(function () {
In fact, your code should be:
<script>
$(document).ready(function () {
var url = '#Url.Action("Register", "UserPanel")';
$('#ajax-button').click(function () {
var data = $('#Form1').serialize();
debugger
$.ajax({
type: "POST",
data: data,
url: url,
success: function (result) {
alert('Done');
},
error: function () {
alert("error");
}
});
})
})
</script>
In your code data set when docuement loaded and for this reason the value
is null
You must write like this
<form id="Form1" asp-action="Register" asp-controller="UserPanel" method="post">
<div class="row">
<div class="col-lg-5 col-md-5 col-sm-12 col-12 .sm-right" id="margin-top">
<span>Name:</span>
<input type="text" asp-for="Name" class="form-control">
</div>
<div>
<span>Number:</span>
<input type="text" asp-for="Number" class="form-control">
</div>
</div>
<div class="form-group">
<button id="ajax-button">Submit</button>
</div>
</form>
And This ViewModel
public class RegisterVm
{
public string Name { get; set; }
public string Number { get; set; }
}
And finally this is the Ajax code
#section Scripts{
<script>
$(document).ready(function () {
var url = $('#Form1').attr("action");
var model = $('#Form1').serialize();
var token = $('input[name=__RequestVerificationToken]').val();
model.__RequestVerificationToken = token;
$('#ajax-button').click(function () {
$.ajax({
type: $('#Form1').attr("method"),
data: model,
url: url,
success: function (result) {
alert('Done');
},
error: function () {
alert("error");
}
});
})
})
</script>
}
Your data are set when docuement loaded, it will not pass the value which you enter.
For a working demo, try code below:
<script>
$(document).ready(function () {
$('#ajax-button').click(function () {
var url = '#Url.Action("Register", "Home")';
var data = new FormData();
data.append('Name', $('#Name').val());
data.append('Number', $('#Number').val());
$.ajax({
type: "POST",
data: data,
url: url,
processData: false,
contentType: false,
success: function (result) {
alert('Done');
},
error: function () {
alert("error");
}
});
})
})
</script>

angularjs: Better way to use ngModel.$asynValidators

I just want to asked if there's a better way to improve my user validation codes.
directive.js
angular.module('installApp')
.directive('usernameValidator', function ($q, $timeout, $http) {
return {
require: 'ngModel',
link: function(scope, element, attrs, ngModel) {
ngModel.$asyncValidators.username = function(modelValue, viewValue) {
return $http.post('../api/v1/checkUsers', {user: {'username':viewValue}}).then(
function(response){
scope.checkUsers = response.data;
var deferred = $q.defer();
$timeout(function() {
if(scope.checkUsers['status'] == 404){
deferred.reject();
}else{
deferred.resolve();
}
}, 2000);
return deferred.promise;
});
};
}
}
});
accounts.html
<form name="myForm" ng-submit="submit()">
<div>
<label>Username: <input type="text" ng-model="signup.username" name="username" required username-validator>
</label>
<div ng-if="myForm.username.$dirty">
<div ng-messages="myForm.username.$error" class="validation-error">
<div ng-message="required">Username required</div>
<div ng-message="username">Username already in use</div>
</div>
<div ng-messages="myForm.username.$pending" class="validation-pending">
<div ng-message="username">Checking username availability... </div>
</div>
</div>
</div>
<div>
<label>Password: <input type="password" ng-model="signup.password" name="password" required></label>
<div ng-messages="myForm.password.$error" ng-if="myForm.password.$dirty" class="validation-error">
<div ng-message="required">Password required</div>
</div>
</div>
<button type="submit" ng-disabled="myForm.$invalid || myForm.$pending">Submit</button>
</form>
The above code is perfectly working fine, but there is a doubt in my mind on how can I improve it in a better way. I've seen many examples and I noticed they didn't used mostly the if/ else condition. Please help
One thing you could do is try to make your directive reusable.
A good example I found on the internet is coming from Year of moo
angular
.module('yourmodule')
.directive('recordAvailabilityValidator',
['$http', function($http) {
return {
require : 'ngModel',
link : function(scope, element, attrs, ngModel) {
var apiUrl = attrs.recordAvailabilityValidator;
function setAsLoading(bool) {
ngModel.$setValidity('recordLoading', !bool);
}
function setAsAvailable(bool) {
ngModel.$setValidity('recordAvailable', bool);
}
ngModel.$parsers.push(function(value) {
if(!value || value.length == 0) return;
setAsLoading(true);
setAsAvailable(false);
$http.get(apiUrl, { v : value })
.success(function() {
setAsLoading(false);
setAsAvailable(true);
})
.error(function() {
setAsLoading(false);
setAsAvailable(false);
});
return value;
})
}
}
}]);

Jquery not being called [closed]

This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center.
Closed 10 years ago.
First here's my code
Ok my problem is That when trying to use the registration form it doesn't call the code.
i have examined this several times and cant seem to find a problem i'm using the login script on the same page and that seems just fine.
login.js
$(function() {
// Expand
$("#open").click(function(){
$("div#panel").slideDown("slow");
});
// Collapse
$("#close").click(function(){
$("div#panel").slideUp("slow");
});
// Change Text
$("#toggle a").click(function () {
$("#toggle a").toggle();
});
// Login proccess Start
$('.error').hide();
$(".bt_login").click(function() {
// validate input
$('.error').hide();
var username = $("input#username").val();
if (username == "") {
$("label#username_error").show();
$("input#username").focus();
return false;
}
var password = $("input#password").val();
if (password == "") {
$("label#password_error").show();
$("input#password").focus();
return false;
}
var rememberMe = $("input#rememberMe").val();
// correct data sent
var dataString = 'username='+ username + '&password=' + password + '&submit=Login' + '&rememberMe=' + rememberMe;
alert (dataString);return false;
$.ajax({
type: "POST",
url: "../../inc/files/login.php",
data: dataString,
success: function() {
return false;
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
$('#login_form').html("<div id='message'></div>");
$('#message').html("<h2>!</h2>")
.append("<p>Error Details; <br /> Status: ", textStatus, " <br /> Error thrown: ", errorThrown,"</p>")
.hide()
.fadeIn(1500, function() {
$('#message').append("<img id='cross' src='images/cross.png' />");
});
return false;;
}
});
});
// End login proccess
//Registration Process start
$("bt_register").click(function() {
// validate inpu
$('.error').hide();
var username2 = $("input#username2").val();
if (username2 == "") {
$("label#username2_error").show();
$("input#username2").focus();
return false;
}
// var re = new RegExp("/[^a-z0-9\-\_\.]+/i");
// if(re.test(username2) = true) {
// $("label#username2_error2").show();
// $("input#username2").focus();
// return false;
// }
var password2 = $("input#password2").val();
if (password2 == "") {
$("label#password2_error").show();
$("input#password2").focus();
return false;
}
var email = $("input#email").val();
if (password == "") {
$("label#email_error").show();
$("input#email").focus();
return false;
}
// correct data sent
var dataString = 'username='+ username2 + '&password=' + password2 + '&submit=Register' + '&email=' + email;
alert (dataString);return false;
$.ajax({
type: "POST",
url: "../../inc/files/login.php",
data: dataString,
success: function() {
return false;
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
$('#reg_form').html("<div id='message'></div>");
$('#message').html("<h2>!</h2>")
.append("<p>Error Details; <br /> Status: ", textStatus, " <br /> Error thrown: ", errorThrown,"</p>")
.hide()
.fadeIn(1500, function() {
$('#message').append("<img id='cross' src='images/cross.png' />");
});
return false;
}
});
});
});
html form calling the Jquery
<div id="reg_form">
<form class="clearfix" action="" >
<h1>Register Here!</h1>
<label class="grey" for="username">Username:</label>
<input class="text-input" type="text" name="username2" id="username2" value="" size="23" />
<label class="error" for="username2" id="usernamename2_error">This field is required.</label>
<label class="error" for="username2" id="usernamename2_error2">Your username contains invalid characters!</label>
<label class="grey" for="email">Email:</label>
<input class="text-input" type="text" name="email" id="email" size="23" />
<label class="error" for="email" id="email_error">This field is required.</label>
<label class="grey" for="password2">Password:</label>
<input class="text-input" type="password" name="password2" id="password2" size="23" />
<label class="error" for="password2" id="password2_error">This field is required.</label>
<input type="submit" name="submit" value="Register" class="bt_register" />
</form>
</div>
Change
$("bt_register").click(function() {
TO
$(".bt_register").click(function(event) {
event.preventDefault();
Second error is if (password == "") { because for .bt_register click event you did not defined password variable.
What you can do is define var password; as global so every click event function can use it.
I have modified your code here is what i did and which is alerting passed string.
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
$(function()
{
var password;
$("#open").click(function()
{
$("div#panel").slideDown("slow");
});
$("#close").click(function()
{
$("div#panel").slideUp("slow");
});
$("#toggle a").click(function ()
{
$("#toggle a").toggle();
});
$('.error').hide();
// Start login proccess
$(".bt_login").click(function(event)
{
event.preventDefault();
$('.error').hide();
var username = $("input#username").val();
if (username == "")
{
$("label#username_error").show();
$("input#username").focus();
return false;
}
password = $("input#password").val();
if (password == "")
{
$("label#password_error").show();
$("input#password").focus();
return false;
}
var rememberMe = $("input#rememberMe").val();
var dataString = 'username='+ username + '&password=' + password + '&submit=Login' + '&rememberMe=' + rememberMe;
alert (dataString);return false;
$.ajax(
{
type: "POST",
url: "../../inc/files/login.php",
data: dataString,
success: function()
{
return false;
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
$('#login_form').html("<div id='message'></div>");
$('#message').html("<h2>!</h2>").append("<p>Error Details; <br /> Status: ", textStatus, " <br /> Error thrown: ", errorThrown,"</p>").hide().fadeIn(1500, function() {
$('#message').append("<img id='cross' src='images/cross.png' />");
});
return false;;
}
});
});
// End login proccess
//Registration Process start
$(".bt_register").click(function(event)
{
event.preventDefault();
// validate inpu
$('.error').hide();
var username2 = $("input#username2").val();
if (username2 == "")
{
$("label#username2_error").show();
$("input#username2").focus();
return false;
}
var password2 = $("input#password2").val();
if (password2 == "")
{
$("label#password2_error").show();
$("input#password2").focus();
return false;
}
var email = $("input#email").val();
if (password == "")
{
$("label#email_error").show();
$("input#email").focus();
return false;
}
// correct data sent
var dataString = 'username='+ username2 + '&password=' + password2 + '&submit=Register' + '&email=' + email;
alert (dataString);return false;
$.ajax(
{
type: "POST",
url: "../../inc/files/login.php",
data: dataString,
success: function()
{
return false;
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
$('#reg_form').html("<div id='message'></div>");
$('#message').html("<h2>!</h2>").append("<p>Error Details; <br /> Status: ", textStatus, " <br /> Error thrown: ", errorThrown,"</p>").hide().fadeIn(1500, function()
{
$('#message').append("<img id='cross' src='images/cross.png' />");
});
return false;
}
});
});
});
</script>
<div id="reg_form">
<form class="clearfix" action="" >
<h1>Register Here!</h1>
<label class="grey" for="username">Username:</label>
<input class="text-input" type="text" name="username2" id="username2" value="" size="23" />
<label class="error" for="username2" id="usernamename2_error">This field is required.</label>
<label class="error" for="username2" id="usernamename2_error2">Your username contains invalid characters!</label>
<label class="grey" for="email">Email:</label>
<input class="text-input" type="text" name="email" id="email" size="23" />
<label class="error" for="email" id="email_error">This field is required.</label>
<label class="grey" for="password2">Password:</label>
<input class="text-input" type="password" name="password2" id="password2" size="23" />
<label class="error" for="password2" id="password2_error">This field is required.</label>
<input type="submit" name="submit" value="Register" class="bt_register" />
</form>
</div>
Instead i suggest you to do this with submit form:
$("#reg_form").children('form').submit(function (e) {
e.preventDefault(); //<------------stops the submission
// validate inpu
$('.error').hide();
var username2 = $("input#username2").val();
if (username2 == "") {
$("label#username2_error").show();
$("input#username2").focus();
return false;
}
var password2 = $("input#password2").val();
if (password2 == "") {
$("label#password2_error").show();
$("input#password2").focus();
return false;
}
var email = $("input#email").val();
if (password == "") {
$("label#email_error").show();
$("input#email").focus();
return false;
}
// correct data sent
var dataString = $(this).serialize();
alert(dataString);
$.ajax({
type: "POST",
url: "../../inc/files/login.php",
data: dataString,
success: function () {
alert('success.');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
$('#reg_form').html("<div id='message'></div>");
$('#message').html("<h2>!</h2>")
.append("<p>Error Details; <br /> Status: ", textStatus, " <br /> Error thrown: ", errorThrown, "</p>")
.hide()
.fadeIn(1500, function () {
$('#message').append("<img id='cross' src='images/cross.png' />");
});
return false;
}
});
});
ok
i thik your var dataString is not well formatted
you can try this syntax
data: '{LiveID: "' + Live_ID + '", CategoryID: "' + Category_ID + '"}',
This allowed me to create a label and have it link to a predefined function. Enclude the function within the body of the document and before the label.
<label class="error" for="username2" id="usernamename2_error2">Your username contains invalid characters!
function(open)