dwex
Erfahrenes Mitglied
Hallo Leute,
ich stehe schon wieder mal vor einem Ajax-Problem bei dem ich eure Hilfe brauche.
Ich habe ein HTML-Formular welches einige Eingabefelder innerhalb Lables hat.
Ausserdem hat dieses HTML-Formular auch Hiddenfields welche alle den selben Namen haben. Diese HiddenFields stammen aus einem Ajaxuploadscript und betiteln die Dateinamen. Diese HiddenFields werden als auch "dynamisch" erzeugt.
Diese sollen also als Array an mein PHP-Script über das untenstehende JS gesendet werden.
Außerdem habe ich folgendes JS in der Datei:
Jetzt gibt es ja innerhalb des JS die Funktion submitFu:function() welche den Datenfeed für die Übergabe an mein PHP-Script macht. Hier habe ich folgendes versucht mit einzubauen:
damit bekomme ich aber eine leere Variable "test" übergeben. Außerdem habe ich folgendes versucht:
Damit geht dann gleich garnichts mehr. Dann ist mir aufgefallen, dass es ja Hidden-Fields sind und keine Label. Jetzt war der nächste versuch.
Auch das schlug fehl - hier hat mir Firebug dann den folgenden Hinweis gegeben:
TypeError: _.document is undefined
Hat jemand eine Idee wie ich das lösen könnte?
Vielen Dank für euere Hilfe im voraus!
ich stehe schon wieder mal vor einem Ajax-Problem bei dem ich eure Hilfe brauche.
Ich habe ein HTML-Formular welches einige Eingabefelder innerhalb Lables hat.
Ausserdem hat dieses HTML-Formular auch Hiddenfields welche alle den selben Namen haben. Diese HiddenFields stammen aus einem Ajaxuploadscript und betiteln die Dateinamen. Diese HiddenFields werden als auch "dynamisch" erzeugt.
Diese sollen also als Array an mein PHP-Script über das untenstehende JS gesendet werden.
HTML:
<form id="form2">
<input type="hidden" name="test[]" value="meine_datei.pdf" />
<input type="hidden" name="test[]" value="noch_eine_datei.pdf" />
<fieldset>
<label class="vorname">
<input type="text" value="Vorname:" />
<span class="error">*Bitte geben Sie einen richtigen Vornamen ein.</span> <span class="empty">*Bitte geben Sie Ihren Vornamen ein.</span>
</label>
</fieldset>
</form>
HTML:
//forms
;(function($){
$.fn.forms=function(o){
return this.each(function(){
var th=$(this)
,_=th.data('forms')||{
errorCl:'error',
emptyCl:'empty',
invalidCl:'invalid',
notRequiredCl:'notRequired',
successCl:'success',
successShow:'4000',
mailHandlerURL:'bin/mailhandler.php',
ownerEmail:'test@test.de',
stripHTML:true,
smtpMailServer:'localhost',
targets:'input,textarea',
controls:'a[data-type=reset],a[data-type=submit]',
validate:true,
rx:{
".name":{rx:/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/,target:'input'},
".state":{rx:/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/,target:'input'},
".email":{rx:/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i,target:'input'},
".phone":{rx:/^\+?(\d[\d\-\+\(\) ]{5,}\d$)/,target:'input'},
".fax":{rx:/^\+?(\d[\d\-\+\(\) ]{5,}\d$)/,target:'input'},
".message":{rx:/.{20}/,target:'textarea'}
},
preFu:function(){
_.labels.each(function(){
var label=$(this),
inp=$(_.targets,this),
defVal=inp.val(),
trueVal=(function(){
var tmp=inp.is('input')?(tmp=label.html().match(/value=['"](.+?)['"].+/),!!tmp&&!!tmp[1]&&tmp[1]):inp.html()
return defVal==''?defVal:tmp
})()
trueVal!=defVal
&&inp.val(defVal=trueVal||defVal)
label.data({defVal:defVal})
inp
.bind('focus',function(){
inp.val()==defVal
&&(inp.val(''),_.hideEmptyFu(label),label.removeClass(_.invalidCl))
})
.bind('blur',function(){
_.validateFu(label)
if(_.isEmpty(label))
inp.val(defVal)
,_.hideErrorFu(label.removeClass(_.invalidCl))
})
.bind('keyup',function(){
label.hasClass(_.invalidCl)
&&_.validateFu(label)
})
label.find('.'+_.errorCl+',.'+_.emptyCl).css({display:'block'}).hide()
})
_.success=$('.'+_.successCl,_.form).hide()
},
isRequired:function(el){
return !el.hasClass(_.notRequiredCl)
},
isValid:function(el){
var ret=true
$.each(_.rx,function(k,d){
if(el.is(k))
ret=d.rx.test(el.find(d.target).val())
})
return ret
},
isEmpty:function(el){
var tmp
return (tmp=el.find(_.targets).val())==''||tmp==el.data('defVal')
},
validateFu:function(el){
el.each(function(){
var th=$(this)
,req=_.isRequired(th)
,empty=_.isEmpty(th)
,valid=_.isValid(th)
if(empty&&req)
_.showEmptyFu(th.addClass(_.invalidCl))
else
_.hideEmptyFu(th.removeClass(_.invalidCl))
if(!empty)
if(valid)
_.hideErrorFu(th.removeClass(_.invalidCl))
else
_.showErrorFu(th.addClass(_.invalidCl))
})
},
getValFromLabel:function(label){
var val=$('input,textarea',label).val()
,defVal=label.data('defVal')
return label.length?val==defVal?'nope':val:'nope'
}
,submitFu:function(){
_.validateFu(_.labels)
if(!_.form.has('.'+_.invalidCl).length)
$.ajax({
type: "POST",
url:_.mailHandlerURL,
data:{
vorname:_.getValFromLabel($('.vorname',_.form)),
name:_.getValFromLabel($('.name',_.form)),
strasse:_.getValFromLabel($('.strasse',_.form)),
ort:_.getValFromLabel($('.ort',_.form)),
email:_.getValFromLabel($('.email',_.form)),
phone:_.getValFromLabel($('.phone',_.form)),
geburtsdatum:_.getValFromLabel($('.geburtsdatum',_.form)),
eintrittstermin:_.getValFromLabel($('.eintrittstermin',_.form)),
termin:_.getValFromLabel($('.termin',_.form)),
stelle:_.getValFromLabel($('.stelle',_.form)),
fax:_.getValFromLabel($('.fax',_.form)),
state:_.getValFromLabel($('.state',_.form)),
message:_.getValFromLabel($('.message',_.form)),
owner_email:_.ownerEmail,
stripHTML:_.stripHTML
},
success: function(){
_.showFu()
}
})
},
showFu:function(){
_.success.slideDown(function(){
setTimeout(function(){
_.success.slideUp()
_.form.trigger('reset')
},_.successShow)
})
},
controlsFu:function(){
$(_.controls,_.form).each(function(){
var th=$(this)
th
.bind('click',function(){
_.form.trigger(th.data('type'))
return false
})
})
},
showErrorFu:function(label){
label.find('.'+_.errorCl).slideDown()
},
hideErrorFu:function(label){
label.find('.'+_.errorCl).slideUp()
},
showEmptyFu:function(label){
label.find('.'+_.emptyCl).slideDown()
_.hideErrorFu(label)
},
hideEmptyFu:function(label){
label.find('.'+_.emptyCl).slideUp()
},
init:function(){
_.form=_.me
_.labels=$('label',_.form)
_.preFu()
_.controlsFu()
_.form
.bind('submit',function(){
if(_.validate)
_.submitFu()
else
_.form[0].submit()
return false
})
.bind('reset',function(){
_.labels.removeClass(_.invalidCl)
_.labels.each(function(){
var th=$(this)
_.hideErrorFu(th)
_.hideEmptyFu(th)
})
})
_.form.trigger('reset')
}
}
_.me||_.init(_.me=th.data({forms:_}))
typeof o=='object'
&&$.extend(_,o)
})
}
})(jQuery)
$(window).load(function(){
$('#form1').forms({
//ownerEmail:'test@test.de'
}),
$('#form2').forms({
//ownerEmail:'#'
})
})
HTML:
test:_.getValFromLabel($('.test',_.form)),
HTML:
test[]:_.getValFromLabel($('.test[]',_.form)),
HTML:
test:_.document.getElementsByName($('.test[]',_.form)),
TypeError: _.document is undefined
Hat jemand eine Idee wie ich das lösen könnte?
Vielen Dank für euere Hilfe im voraus!
Zuletzt bearbeitet: