获取div的内容,包括输入值

时间:2017-09-08 13:14:18

标签: javascript jquery html regex input

我通过regexp输入替换某些特定字符。

Div看起来像这样:

1)<div>text Text <input> text <input> text text Text</div>

2)var body = data.body.replace(/\.\.\./g, "<input class='bodyy' type='text' size='2' />"); $("#body").html(body);

是否可以获取整个文本,包括来自div的输入值(在我的情况下为id&#39; body&#39;)

jQuery代码:

while ($row = mysql_fetch_array($result1))     //fetch datafrom loop 
{   
$dev = $row["device_token"]; // your devide token

if( strlen ( $dev ) > 65 ) {    // for android 
  $regis[] = $row['device_token'];    
} 
else
{
    $ios[] = $row['device_token'];     // for ios
}

}

foreach($regis as $dev1) {

$id=$dev1;  

$url = 'https://fcm.googleapis.com/fcm/send';

$fields = array (

        'to' => $id,

        'notification' => array (

        "body" => $mess,

"icon" =>"icon",

"sound"=> ""

        )

);

$fields = json_encode ( $fields );

$headers = array (

        'Authorization: key=' . "---your key---",

        'Content-Type: application/json'

);

$ch = curl_init ();

curl_setopt ( $ch, CURLOPT_URL, $url );

curl_setopt ( $ch, CURLOPT_POST, true );

curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );

curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );

curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );

$result = curl_exec ( $ch ); 


 }



 foreach($ios as $dev) {

            if($dev!='')

            {


$deviceToken=$dev;



$passphrase = '';


// Put your alert message here:
$message = $mess;

$ctx = stream_context_create();

stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');

stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);


// Open a connection to the APNS server

$fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

// Create the payload body

$body['aps'] = array(

    'alert' => array(

'body' => $message, 


    ),

   'badge' => +1,

'sound' => 'default',

'content-available' => '1',

    );
$payload = json_encode($body);

$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
$result = fwrite($fp, $msg, strlen($msg));

            }

 }

if (!$result)

{

?>

<script>

alert("Push notification is successfully sent");

</script>

<?php 

}

else

{

?>
<script>

alert("Mesaage is successfully sent");

</script>

<?php 

}

curl_close ( $ch );

fclose($fp);

 }

小提琴:https://jsfiddle.net/uepf87fc/

2 个答案:

答案 0 :(得分:1)

您可以使用函数自行解析,这是一个例子:

function getTextWithInputValues(id) {
    var element = document.getElementById(id);
    if (!element) {
        return null;
    }

    var elementText = element.innerHTML; // Get the entire text from your element

    var elementInputs = element.getElementsByTagName('input'); // fetch all inputs from your element

    // replace all input fields with their respective values
    Object.getOwnPropertyNames(elementInputs).forEach(
        (input) => {
            var inputText = elementInputs[input].outerHTML;
            if (elementText.search(inputText) > 0) {
                elementText = elementText.replace(inputText, elementInputs[input].value);
            }
        }
    );

    return elementText;

}

您可以在此处通过打开控制台进行测试,粘贴此代码,然后在页面顶部的搜索框中输入内容(不要点击搜索,只需键入内容),然后你在控制台中调用函数,如getTextWithInputValues('search'),它将输出类似

的内容
<svg ......</svg>
your-text-here
<button .....</button>

希望这有帮助。

答案 1 :(得分:-1)

即使您要求REGEX,我也不相信这是必要的。

这将返回数组中的数据。第一个索引是正文文本,然后是每个输入字段值。

var values = [];
values.push($('#body').text());

var inputs = $('#body input');

for(var i = 0; i < $(inputs).length; i++)
{
    var currentElement = $(inputs)[i];
    values.push($(currentElement).val());
}


console.log(values);